一:为什么要清除浮动
浮动的元素会脱离标准流,脱离标准流的盒子不再保留原来的位置,会影响后面的标准流的布局,主要是为了解决浮动元素引起内部高度为0的问题
2:
二: 清除浮动的本质
如果父盒子本身有高度,就不需要清除浮动,浮动之后父盒子就会自动检测高度,父盒子就不会影响下面的标准流的布局了。清除浮动的本质是清除浮动的影响。
三:清除浮动的方法
1:额外标签法:
额外标签法就是在最后一个浮动标签后新加一个标签,并给其设置(clear : both)
其优点是通俗易懂,书写方便,缺点是添加无意义的标签,结构比较差
2:给父级添加overflow属性
触发bfc属性,实现清除浮动
优点是代码简洁,缺点是内容增多的 时候容易造成不会自动换行导致内容被隐藏掉,无法显示出要溢出的元素
3:使用after伪元素清除浮动(推荐使用)
优点是符合闭合浮动的思想,结构语义化正确
缺点是ie6,7不支持伪元素,要使用zoom:触发haslayout
4:双伪元素清除浮动
优点是代码更加简洁, 缺点是低版本浏览器不支持