CSS-清除浮动

1.why?

由于父级盒子很多情况下都不方便给高度,但是子盒子浮动又不占有位置,最后父级盒子的高度为0;会影响下面标准流的盒子(浮动元素不占有文档流的位置

2.本质

清除浮动元素脱离标准流所造成的影响。

3.策略

闭合浮动,只让浮动元素在父盒子内部影响;

方法一:额外标签法(隔墙法)

在最后一个浮动的子元素后面再添加一个额外标签,最后在此标签的基础上添加样式clear:both;

缺点:添加无意义的标签,结构化差,代码冗余。所以此方法通常不用!

方法二:给父级元素添加overflow:hidden(子不教,父之过)

优点:代码简洁,方便快捷;   缺点:无法显示溢出的部分,特别是有定位的情况下

方法三:after伪元素法(注:此法为额外标签法的升级版,但不同的是给父元素多添加一个类名:clearfix)

.clearfix:after { content: ' ';   display: block;   height: 0;   clear: both;   visibility: hidden; }

还要加上兼容性(IE6,7)写法:.clearfix { *zoom: 1; }

优点:结构简单,没有添加额外标签;  缺点:兼容性;  代表:百度,网易,淘宝

方法四:双伪元素清除浮动(用法同方法三)

.clearfix:before, .clearfix:after { content: ' ';   display: table; }

.clearfix: after { clear: both }  .clearfix { *zoom: 1; }

优点:较法三更简洁    代表:小米,腾讯

 

总结:推荐使用方法三 / 四;

posted @ 2020-10-02 12:03  WANG灬  阅读(98)  评论(0编辑  收藏  举报