清浮动方法汇总

浮动元素脱离了文档流,所以父元素没办法预知它的大小,导致父元素没有了高度,设置了背景色也看不到等一系列问题出现了。这时就需要我们去清浮动。

接下来总结了下清浮动的几种方式。

方案一:
在浮动元素后边加一个空标签,要块级的,IE6 7行内元素也可以

1 i{
2      clear:both;
3      height:0;
4      display:block;
5 }
6 <div style='background:red;'>
7      <img style="float:left;" src="http://img02.taobaocdn.com/bao/uploaded/i3/T1WTxlFftaXXb1upjX.jpg_290x290.jpg"/>
8      <i></i>
9 </div>

缺点:有冗余标签

方案二:
设置overflow:hidden,同时IE6下需要触发hasLayout

1 .clearfix{
2      overflow:hidden; /*IE7+*/
3      _zoom:1;/*IE6*/
4 }

缺点:内部元素没办法定位到外面

方案三:
浮动元素自身是清浮动的

.clearfix{
     float:left;
}

缺点:虽然自身的浮动清除了,但是把问题留给他父亲了

方案四:

 1 .clearfix{
 2      *zoom:1;/*IE6 7 只要触发layout即可*/
 3 }
 4 .clearfix:after{ /*原理同方案一,只是IE6 7不支持:after伪类*/
 5      content:".";
 6      clear:both;
 7      height:0;
 8      font-size:0;
 9      line-height:0;
10      display:block;
11 }

这是目前使用比较广泛的方式,需要注意的是content属性不能为空格,必须有内容,否则firefox下会出现一个外边距传递的bug。

方案五:

 1 .clearfix:before,
 2 .clearfix:after {
 3     content:"";
 4     display:table;
 5 }
 6 .clearfix:after {
 7     clear:both;
 8 }
 9 .clearfix {
10     *zoom:1;
11 }
12 <div class="clearfix" style='background:red;'>
13      <img style="float:left;" src="http://img02.taobaocdn.com/bao/uploaded/i3/T1WTxlFftaXXb1upjX.jpg_290x290.jpg"/>
14 </div>

这种方式比较新颖,也有很多人使用这种方式

原文地址:https://www.cnblogs.com/f2er/p/clearfix.html