使用bootstrap的折叠功能时,我会遇到一种奇怪的行为。在折叠和解除折叠时,div
会出现“跳跃”状态。行为。
这显示在 following fiddle 。
中这是代码
<button class="btn btn-default" type="button" data-toggle="collapse" data-target="#refine-search" aria-expanded="false" aria-controls="refine-search">
Refine Search
<span class="caret"></span>
</button>
<div class="collapse refine-search-collapse-container well" id="refine-search">
<form class="form-horizontal">
<div class="form-group">
<div class="col-sm-6">
<select class="form-control">
<option value="">ad</option>
<option value="">sfsd</option>
<option value="">sdf</option>
<option value="">sf</option>
<option value="">sdf</option>
</select>
</div>
</div>
<div class="form-group">
<div class="col-sm-6">
<select class="form-control">
<option value="">Blah1</option>
<option value="">Blah2</option>
<option value="">Blah3</option>
<option value="">Blah4</option>
<option value="">Blah5</option>
</select>
</div>
</div>
<div class="form-group">
<div class="col-sm-6">
<input type="number" class="form-control">
</div>
</div>
<div class="form-group">
<div class="col-sm-6">
<select class="form-control">
<option value="">Yes</option>
<option value="">No</option>
</select>
</div>
</div>
</form>
</div>
<div class="">
<h3>Search Result</h3>
</div>
答案 0 :(得分:14)
collapse
中的跳转归因于.well
CSS类。
.well
类添加margin-bottom: 20px;
,当collapse
获取display:none
属性时会导致跳转。 padding
的{{1}}也会在此次跳跃中发挥作用。
要使.well
更顺畅,请在collapse
.well
内添加.collapse
班级
如下所示,此DIV
。
要快速升级,CSS
课程会添加导致跳转的.well
,因为它会影响margin-bottom, padding, and min-height
上的框模型。
display:none
&#13;
.refine-search-collapse-container .well {
margin-bottom: 0;
}
&#13;
答案 1 :(得分:2)
答案 2 :(得分:1)
可折叠元素上不应有任何填充或边距。这是导致跳跃效应的原因。
ie:在您的情况下,它有额外的类添加填充和边距。
<div class="refine-search-collapse-container well collapse">
如果要保留所有当前样式,例如.well
等,最好将现有的可折叠元素包装在另一个 标记周围,并使父div成为可折叠元素,
查看更新的示例:
在您的情况下,您需要在可折叠元素上使用.clearfix
,因为它有一个因.well
类
答案 3 :(得分:0)
嗨,这是您更新后的fiddle。您的代码应如下所示:
<div class="container">
<div class="row">
<div class="col-xs-12">
<button class="btn btn-default" type="button" data-toggle="collapse" data-target="#refine-search" aria-expanded="false" aria-controls="refine-search">
Refine Search
<span class="caret"></span>
</button>
</div>
<div class="clearfix"></div>
<div class="col-xs-12">
<form class="form-horizontal collapse" id="refine-search">
<div class="form-group">
<div class="col-sm-6">
<select class="form-control">
<option value="">ad</option>
<option value="">sfsd</option>
<option value="">sdf</option>
<option value="">sf</option>
<option value="">sdf</option>
</select>
</div>
</div>
<div class="form-group">
<div class="col-sm-6">
<select class="form-control">
<option value="">Blah1</option>
<option value="">Blah2</option>
<option value="">Blah3</option>
<option value="">Blah4</option>
<option value="">Blah5</option>
</select>
</div>
</div>
<div class="form-group">
<div class="col-sm-6">
<input type="number" class="form-control">
</div>
</div>
<div class="form-group">
<div class="col-sm-6">
<select class="form-control">
<option value="">Yes</option>
<option value="">No</option>
</select>
</div>
</div>
</form>
</div>
<div class="clearfix"></div>
<div class="col-xs-12">
<h3>Search Result</h3>
</div>
</div>
</div>
答案 4 :(得分:0)
对于那些带有类.collapse的div,不应该有padding-bottom or padding-top
。该填充使跳转效果
答案 5 :(得分:0)
这是一个旧的错误,无法在版本3中修复。将margin-bottom
的{{1}}设置为0.您可能必须设置顶部和底部边距和/或填充其他元素为0也取决于它们相对于你正在折叠的位置(在这种情况下是井)。不幸的是,你只需要玩游戏。
另外,如果你正在折叠/展开几个彼此靠近的元素,并且想要在将边距和/或填充设置为0之后调整它们之间的空间(这将把所有东西塞进去),那么hack可以工作(但是我鄙视使用)是在它们之间放一个空的well
并调整它的顶部和底部填充或边距。
以下是Github上的问题:https://github.com/twbs/bootstrap/issues/12093
答案 6 :(得分:-2)