清除浮动

147 阅读1分钟

浮动即元素脱离了正常的文档流,产生原因一般为盒子中子元素使用了float属性,导致父级盒子不能被撑开。可使用以下方法清除浮动:

1、clear方法

在最后一个浮动元素后,添加一个空标签,空标签class设置为clear: both

.clear{
    clear: both;
}

优点:通俗、方便 缺点:添加无意义标签,徒增代码量

2、父元素添加overflow属性

给浮动元素的容器(父元素)添加overflow: hidden属性

.containerName{
    ...
    voerflow: hidden;
}

优点:代码简洁 缺点:容器中内容过多时会被隐藏,无法显示溢出元素 这里是通过触发BFC的方式来清除浮动。 BFC:表示块级格式化上线文,是指一个独立的块级渲染域,不受外界因素影响的区域。 元素转换为BFC需满足的条件: 1)float不为none; 2)position不为static或relative; 3)display为inline-block、inline-flex、table-cell、table-caption、flex; 4)overflow不为visible。

3、:after方法(推荐)

给浮动元素的容器添加class,并添加伪元素:after

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

优点:闭合浮动 缺点:ie6-7不支持伪元素

4、:before和:after结合使用

.clearfix:after, clearfix:before{
    content: "";
    display: table;
}
.clearfix:after{
    clear: both;
}
.clearfix{
    zoom: 1;
}

优点:代码简洁 缺点:zoom: 1会触发hasLayout