清除浮动的方式、优缺点
清除浮动的目的
清除浮动主要是为了解决父元素因为子级元素浮动引起的内部高度为0的问题(高度坍塌)
1、

2、

总结一下:
1. 一个父元素中的子元素浮动了,那这个子元素就不再支撑父元素的高度
2. 如果一个父元素中所有的子元素都浮动了,那父元素会高度坍塌
3. 破坏原有的文档流布局,变为浮动布局,元素可以横向排列
4. 浮动会让元素"块状化"【行内 行内块 都会变成块级】
5. 子元素浮动后,外间距的重叠现象消失【兄弟间的上下重叠,父子间的上下边重叠】
这时候很多人会想到新建标签clear:both和float 方法,但是这两种方法并不推荐使用!
什么是clear:both
clear:both:本质就是闭合浮动, 就是让父盒子闭合出口和入口,不让子盒子出来
清除浮动的方法(最常用的4种)
1.额外标签法(在最后一个浮动标签后,新加一个标签,给其设置clear:both;)(不推荐)
此时,如果我们清除了浮动,父元素自动检测子盒子最高的高度,然后与其同高。
优点:通俗易懂,方便
缺点:添加无意义标签,语义化差
2.父级添加overflow属性(父元素添加overflow:hidden/auto/scroll)(不推荐)
通过触发BFC方式,实现清除浮动
缺点:内容增多的时候容易造成不会自动换行导致内容被隐藏掉,无法显示要溢出的元素
3.使用after伪元素清除浮动(推荐使用)--百度网易
优点:符合闭合浮动思想,结构语义化正确
缺点:ie6-7不支持伪元素:after,使用zoom:1触发hasLayout.
推荐使用
4.使用before和after双伪元素清除浮动—小米/腾讯
优点:代码更简洁
缺点:用zoom:1触发hasLayout.