前言
什么是浮动?为什么要清除浮动?
解:当在调整页面布局时,如果子元素都设置了float浮动,那么父元素都高度就会为0,如果不清除浮动都影响继续布局页面,会造成之后元素的浮动元素和上面的浮动堆积在一起,会有很大的影响并且难以调整。
下面列举清除浮动的几种方法
方法一:设置父容器高度
最笨、最简单粗暴的方法,直接设置父容器的高度height为一个固定的值,
优点:简单、好理解、易掌握。
缺点:每个父容器都需要设置一个精确都高度值,还要根据子元素都内容随时进行调整
方法二:空div设置clear:both
在父容器的结尾处添加一个空内容的div标签,设置样式为clear为both;
<div id="container">
<div style="clear:both"></div>//空div
</div>
优点:简单、代码少、浏览器支持好、不易出现问题
缺点:如果页面浮动多,每个父容器都要增加空div,不利于页面优化
方法三:overflow:hidden
给父容器添加overflow属性为hidden
优点:简单、代码少、浏览器支持好
缺点:如果使用position极有可能影响元素布局,因为超出的位置会被隐藏掉(不建议使用)
方法四:伪类after和zoom属性
父容器添加伪类:after 和 zoom属性
.clear{
zoom:1/*可解决ie6,ie7浮动问题*/
}
.clear:after{
clear:both;
display:block;
content:"";
visibility:hidden;
height:0;
}
使用时直接给父容器添加class即可
<div id="container" class="clear">
xxx
xxx
xxx
</div>
优点:兼容性较好、不容易出现问题(非常推荐此方法)
缺点:初学者可能会难以理解,个人认为没什么缺点