CSS

关于CSS清除浮动方法

Posted by deft on May 24, 2020

清除浮动常用方法

方法一:在浮动元素后适合用一个空元素。

1.额外标签法(在最后一个浮动标签后,新加一个标签,给其设置clear:both;)(不推荐)
eg:<div class="clear"></div>

1
2
3
4
5
  <div class="fahter">
        <div class="fu">浮</div>
        <div class="do">动</div>
        <div class="clear"></div>
  </div>

优点:通俗易懂,方便
缺点:添加无意义标签,语义化差
不建议使用。

方法二:给浮动元素的容器加overflow:hidden

*zoom:1; 触发hasLayout 兼容IE6、7

1
2
3
4
5
 .fahter{
        width: 200px;
        border: 1px solid black;
        overflow: hidden;
    }

优点:代码简洁
缺点:内容增多的时候容易造成不会自动换行导致内容被隐藏掉,无法显示要溢出的元素
不推荐使用

方法三:使用CSS3的after伪元素(推荐使用,常用方法)

1
2
3
4
5
6
7
8
.clearfix:after{
	content:'.';
	display:block;
	height:0;
	visibility:hidden;
	clear:both;
}
.clearfix{ *zoom:1; }

优点:符合闭合浮动思想,结构语义化正确
缺点:ie6-7不支持伪元素:after,使用zoom:1触发hasLayout.
推荐使用

方法四:使用before和after双伪元素清除浮动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.clearfix:after,.clearfix:before{
        content: "";
        display: table;
    }
    .clearfix:after{
        clear: both;
    }
    .clearfix{
        *zoom: 1;
    }
 
 <div class="fahter clearfix">
        <div class="fu">浮</div>
        <div class="dong">动</div>
 </div>

优点:代码更简洁
缺点:用zoom:1触发hasLayout.
推荐使用