1.额外标签法:
.clear{ clear:both; }
在浮动的盒子之下再放一个标签,在这个标签中使用clear:both,来清除浮动对页面的影响.
a.内部标签:会将这个浮动盒子的父盒子高度重新撑开.
b.外部标签:会将这个浮动盒子的影响清除,但是不会撑开父盒子.
优点:通俗易懂,书写方便。
缺点:添加许多无意义的标签,结构化比较差,一般不使用。
2.父元素添加overflow属性来清除浮动
overflow:hidden;
先找到浮动盒子的父元素,再在父元素中添加一个属性:overflow:hidden,就是清除这个父元素中的子元素浮动对页面的影响。
注意:一般情况下也不会使用这种方式,因为overflow:hidden有一个特点,离开了这个元素所在的区域以后会被隐藏(overflow:hidden会将超出的部分隐藏起来)。
优点:代码简洁(慎重使用,若该父盒子里还有position定位会引起麻烦)。
缺点:内容增多时候容易造成不会自动换行导致内容被隐藏掉,无法显示需要溢出的元素。
3. 使用after伪元素清除浮动:(常用)
:after方式为空元素的升级版,好处是不用单独加标签了。(较常用)
.clearfloat:after{ display: block; //将文本转为块级元素 clear: both; //清除浮动 content: ""; //设置内容为空 visibility: hidden; //将元素隐藏 height: 0; } .clearfloat{ zoom:1; // 为了兼容IE }
优点:符合闭合浮动思想,结构语义化正确
缺点:由于IE6-7不支持:after,使用zoom:1,触发hasLayout。
4.使用双伪元素清除浮动:
.clearfix:before,.clearfix:after { content: ""; display: block; clear: both; } .clearfix { zoom: 1; }