作者:陈尧倩682 | 来源:互联网 | 2020-09-11 03:08
浮动本质是用来做一些文字混排效果的,但是被我们拿来做布局用,则会有很多的问题出现。由于浮动元素不再占用原文档流的位置,所以它会对后面的元素排版产生影响,为了解决这些问题,此时就需要在该元素中清除浮动。
再解释下就是在标准流下面一个父p没有设置高度属性,那么它的高度就会被子元素的高度撑开。但是如果这个父p中的子元素是浮动的话,如果父p下面再有
一个兄弟p,那么这个兄弟p就会遮挡这个父元素。这个现象也叫浮动溢出。
示例
父p
子p
子p
运行结果
1、额外标签法
通过在浮动元素末尾添加一个空的标签,例如
我们在上面的代码添加
父p
子p
子p
运行结果
完美解决了。
优点 通俗易懂,书写方便。
缺点 添加无意义的标签,结构化较差。
2、父级添加overflow属性方法
可以通过触发BFC的方式,可以实现清除浮动效果。(BFC后面会讲)
可以给父级元素添加: overflow为 hidden|auto|scroll 都可以实现。
我们将上面代码修改为
父p
子p
子p
也是能实现去除浮动的效果。
优点 代码简洁
缺点 内容增多时候容易造成不会自动换行导致内容被隐藏掉,无法显示需要溢出的元素。
3、使用after伪元素清除浮动
:after 方式为空元素的升级版,好处是不用单独加标签了**
示例
优点 符合闭合浮动思想 结构语义化正确
缺点 由于IE6-7不支持:after,使用 zoom:1触发 hasLayout。
注意: content:"." 里面尽量跟一个小点,或者其他,尽量不要为空,否则再firefox 7.0前的版本会有生成空格。
4、使用before和after双伪元素清除浮动
使用方法 将上面的clearfix样式替换成如下
.clearfix:before, .clearfix:after {
content: "";
display: table;
}
.clearfix:after {
clear: both;
}
.clearfix {
*zoom: 1;
}
优点 代码更简洁
缺点 由于IE6-7不支持:after,使用 zoom:1触发 hasLayout。
5、总结
1、在网页主要布局时使用:after伪元素方法并作为主要清理浮动方式.文档结构更加清晰;
2、在小模块如ul里推荐使用overflow:hidden;(同时留意可能产生的隐藏溢出元素问题);
本文来自PHP中文网,CSS教程栏目,欢迎学习
以上就是为什么要清除浮动?怎样清除?(float)的详细内容,更多请关注 第一PHP社区 其它相关文章!