我有一个两列布局,左侧是侧边栏,右侧是内容。
所以我将侧边栏向左浮动,并给右侧的内容设置了一个边距。一切都很好……
直到,内容的子元素应用了clear,它就会跳到侧边栏下面。
有没有办法让子元素只在其父容器内浮动并清除?
因为图片胜过千言万语,在这里是一个JSFiddle:
我有一个两列布局,左侧是侧边栏,右侧是内容。
所以我将侧边栏向左浮动,并给右侧的内容设置了一个边距。一切都很好……
直到,内容的子元素应用了clear,它就会跳到侧边栏下面。
有没有办法让子元素只在其父容器内浮动并清除?
因为图片胜过千言万语,在这里是一个JSFiddle:
.content
中添加overflow:auto;
,那么应该可以解决这个问题。overflow
属性的默认值是什么? - Justinoverflow:auto
,会创建一个新的“块级格式化上下文”,这意味着其外部的浮动元素不会被考虑清除。请参阅 MDN 上的 clear 和 block formatting context 页面获取更多信息。 - antinomedisplay: flow-root;
是否会更直接一些呢? - hrdwdmrbl你应该避免使用clear。你可以在主容器中使用overflow:hidden。
<div class="content">
<div class="one">One</div>
<div class="two">Two</div>
</div>
.content { float: left; overflow: hidden; width: 900px; }
aside { float: left; width: 100px; }
你也可以用这种方式来实现。
.left{float:left;}
.right {float:right;}
.clear{clear:both;}
<div>
<div class="left">SideBar</div>
<div class="right">
<div>
<div class="left">content 1</div>
<div class="left">content 2</div>
<div class="clear"></div>
</div>
</div>
<div class="clear"></div>
</div>
当在任何 div 上应用 float 时,将它们放在父 div 中,并在同一父 div 中清除。