最后 bootstrap 列在 jquery 动画下方显示行
Last bootstrap column brings underneath row up on jquery animate
我正在使用 bootstrap 构建我的第一个 backbone 应用程序。这是一个简单的联系人管理器,目前仅从数组中读取联系人并显示联系人信息。最初,联系人卡片被最小化,但在联系人卡片内部单击后,它会使用 jquery 动画展开。然而,最后一列弄乱了布局,因为它把它下面的行抬高了,我不知道为什么。我已经在 jsfiddle 上上传了我的应用程序。你能帮我看看为什么在动画显示下面的行时最后一列搞砸了吗?
我的下划线 backbone 模板
<div class="container-fluid">
<nav class="navbar navbar-inverse">
<label class="navbar-brand">Backbone Contact Manager</label>
</nav>
<div class="row">
<div id="filter" class="form-group col-lg-2 col-sm-3 col-xs-6">
<label for="filterSelect">Filter Groups:</label>
</div>
</div>
<div id="directory" class="row"></div>
<!-- UNDERSCORE TEMPLATES -->
<script type="text/template" id="contactTemplate">
<div class="col-lg-3 col-sm-6 col-xs-6">
<a class="btn contact buffer">
<div class="contact-header"></div>
<div class="img-div">
<img src="http://www.clker.com/cliparts/A/Y/O/m/o/N/placeholder.svg" class="contact-image img-circle">
</div>
<div class="contact-name">
<h4> <%= name %></h4>
</div>
<div class='contact-info'>
<br>
<span class='glyphicon glyphicon-info-sign'></span>
<label><%= group %></label>
<br>
<span class="glyphicon glyphicon-map-marker"></span>
<label><%= address %></label>
<br>
<span class="glyphicon glyphicon-envelope"></span>
<label><%= email %></label>
<br>
<span class="glyphicon glyphicon-earphone"></span>
<label><%= phone %></label>
</div>
</a>
</div>
</script>
</div>
我的 backbone 动画视图
var ContactView = Backbone.View.extend({
//get the undercore template
template: _.template($('#contactTemplate').html()),
events: {
'click a': 'renderContactInfo',
},
//always render on initialize so you don't have to later
initialize: function() {
this.render();
},
render: function() {
this.$el.html(this.template(this.model.toJSON()));
return this;
},
renderContactInfo: function() {
var currentContact= this.$el.find('a');
if (currentContact.hasClass('addHeight')) {
currentContact.removeClass('addHeight');
this.$el.find("div:nth-child(4)").toggle();
currentContact.animate({ height: '90px', 'margin-bottom':'120px' });
}
else {
currentContact.animate({ height: '200px', 'margin-bottom': '0px'});
currentContact.addClass('addHeight');
this.$el.find("div:nth-child(4)").toggle();
}
}
});
查看了一下你的问题好像是这里引起的:
currentContact.removeClass('addHeight');
this.$el.find("div:nth-child(4)").toggle();
currentContact.animate({ height: '90px', 'margin-bottom':'120px' });
}
else {
currentContact.animate({ height: '200px', 'margin-bottom': '0px'});
currentContact.addClass('addHeight');
this.$el.find("div:nth-child(4)").toggle();
第一个的高度和底部边距总计 210px,而第二个总共只有 200px,所以将 else 中的 margin-bottom 的值更改为 10px
currentContact.animate({ height: '200px', 'margin-bottom': '10px'});
这只解决了你问题的一半,下一个列被推下但又弹回。似乎正在发生的事情是,一些 class 可能 .buffer
正在将内容向下推,然后一旦它被覆盖并且 margin-bottom 从 120px 更改为 10px 它就会回到原位。
您可能需要查看添加 class 的顺序,或者先删除一个 class,然后添加另一个 class 以更改其页边距。希望这能让您知道在哪里看。
我正在使用 bootstrap 构建我的第一个 backbone 应用程序。这是一个简单的联系人管理器,目前仅从数组中读取联系人并显示联系人信息。最初,联系人卡片被最小化,但在联系人卡片内部单击后,它会使用 jquery 动画展开。然而,最后一列弄乱了布局,因为它把它下面的行抬高了,我不知道为什么。我已经在 jsfiddle 上上传了我的应用程序。你能帮我看看为什么在动画显示下面的行时最后一列搞砸了吗?
我的下划线 backbone 模板
<div class="container-fluid">
<nav class="navbar navbar-inverse">
<label class="navbar-brand">Backbone Contact Manager</label>
</nav>
<div class="row">
<div id="filter" class="form-group col-lg-2 col-sm-3 col-xs-6">
<label for="filterSelect">Filter Groups:</label>
</div>
</div>
<div id="directory" class="row"></div>
<!-- UNDERSCORE TEMPLATES -->
<script type="text/template" id="contactTemplate">
<div class="col-lg-3 col-sm-6 col-xs-6">
<a class="btn contact buffer">
<div class="contact-header"></div>
<div class="img-div">
<img src="http://www.clker.com/cliparts/A/Y/O/m/o/N/placeholder.svg" class="contact-image img-circle">
</div>
<div class="contact-name">
<h4> <%= name %></h4>
</div>
<div class='contact-info'>
<br>
<span class='glyphicon glyphicon-info-sign'></span>
<label><%= group %></label>
<br>
<span class="glyphicon glyphicon-map-marker"></span>
<label><%= address %></label>
<br>
<span class="glyphicon glyphicon-envelope"></span>
<label><%= email %></label>
<br>
<span class="glyphicon glyphicon-earphone"></span>
<label><%= phone %></label>
</div>
</a>
</div>
</script>
</div>
我的 backbone 动画视图
var ContactView = Backbone.View.extend({
//get the undercore template
template: _.template($('#contactTemplate').html()),
events: {
'click a': 'renderContactInfo',
},
//always render on initialize so you don't have to later
initialize: function() {
this.render();
},
render: function() {
this.$el.html(this.template(this.model.toJSON()));
return this;
},
renderContactInfo: function() {
var currentContact= this.$el.find('a');
if (currentContact.hasClass('addHeight')) {
currentContact.removeClass('addHeight');
this.$el.find("div:nth-child(4)").toggle();
currentContact.animate({ height: '90px', 'margin-bottom':'120px' });
}
else {
currentContact.animate({ height: '200px', 'margin-bottom': '0px'});
currentContact.addClass('addHeight');
this.$el.find("div:nth-child(4)").toggle();
}
}
});
查看了一下你的问题好像是这里引起的:
currentContact.removeClass('addHeight');
this.$el.find("div:nth-child(4)").toggle();
currentContact.animate({ height: '90px', 'margin-bottom':'120px' });
}
else {
currentContact.animate({ height: '200px', 'margin-bottom': '0px'});
currentContact.addClass('addHeight');
this.$el.find("div:nth-child(4)").toggle();
第一个的高度和底部边距总计 210px,而第二个总共只有 200px,所以将 else 中的 margin-bottom 的值更改为 10px
currentContact.animate({ height: '200px', 'margin-bottom': '10px'});
这只解决了你问题的一半,下一个列被推下但又弹回。似乎正在发生的事情是,一些 class 可能 .buffer
正在将内容向下推,然后一旦它被覆盖并且 margin-bottom 从 120px 更改为 10px 它就会回到原位。
您可能需要查看添加 class 的顺序,或者先删除一个 class,然后添加另一个 class 以更改其页边距。希望这能让您知道在哪里看。