我有一个twitter bootstrap的问题,对我来说有点奇怪。我有一个侧边栏固定在左侧和一个主区域。
<div>
<div id="sidebar">
<ul>
<li>A</li>
<li>A</li>
<li>C</li>
<li>D</li>
<li>E</li>
<li>F</li>
<li>...</li>
<li>Z</li>
</ul>
</div>
<div id="main">
<div class="clearfix">
<div class="pull-right">
<a>RIGHT</a>
</div>
</div>
<div>MOVED BELOW Z</div>
</div>
#sidebar {
background: red;
float: left;
width: 100px;
}
#main {
background: green;
margin-left: 150px;
overflow: hidden;
}
在主要区域内部,我有一些拉左和拉右的内容,由clearfix清除。
问题是clearfix-div下面的内容被移动到低于侧边栏内容。
我为此做了一个小提琴:http://jsfiddle.net/ZguC7/
我通过将“overflow:collapse”设置为#main解决了这个问题,但是我不理解它,如果有人能够解释造成这个问题的原因,我会非常高兴。
答案 0 :(得分:39)
clearfix
应该包含浮动元素,但是在你的html中,只有在你的clearfix
向右浮动后才添加pull-right
所以你应该这样做:
<div class="clearfix">
<div id="sidebar">
<ul>
<li>A</li>
<li>A</li>
<li>C</li>
<li>D</li>
<li>E</li>
<li>F</li>
<li>...</li>
<li>Z</li>
</ul>
</div>
<div id="main">
<div>
<div class="pull-right">
<a>RIGHT</a>
</div>
</div>
<div>MOVED BELOW Z</div>
</div>
很高兴知道你通过设置溢出属性解决了这个问题。然而,清除浮子也是个好主意。如果您已经浮动了元素,则可以像在主体中一样添加overflow: hidden;
。