CSS中浮动元素经常会导致其父元素的高度无法自适应,从而出现一些奇怪的布局问题,所以我们需要清除浮动。以下是几种清除浮动的方式:
.clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } .clearfix { display: inline-block; } * html .clearfix { height: 1%; } .clearfix { display: block; }
1. 使用clearfix
clearfix是最常用的清除浮动的方法。它会插入一个伪元素,然后给这个伪元素设置clear属性,从而清除浮动。具体实现可以参考上面的代码。
.parent { overflow: hidden; }
2. 使用overflow
给父元素添加overflow属性,可以触发BFC,从而清除浮动。缺点是,如果这个父元素有边框或者背景色,可能会遮盖其他元素。
.parent:before, .parent:after { content: ""; display: table; } .parent:after { clear: both; }
3. 使用:before和:after
这种方法需要在父元素上添加:before和:after伪元素,然后给其中一个设置clear:both。这样就可以清除浮动了。缺点是,这种方法会增加渲染时间。
.parent { display: flow-root; }
4. 使用display: flow-root
flow-root是CSS中的一个新属性,可以触发BFC并且清除浮动。但是这个属性目前只有比较新的浏览器支持,兼容性不太好。