CSS 清除浮动与BFC的方法
前端  /  管理员 发布于 7年前   160
BFC
BFC:块级格式化上下文
BFC的布局规则
如何创建BFC
1、 float 的值不是 none 。
2、 position 的值不是 static 或者 relative 。
3、 display 的值是 inline-block 、 table-cell 、 flex 、 table-caption 或者 inline-flex
4、 overflow 的值不是 visible
BFC的作用
1.利用BFC避免margin重叠。
2.自适应两栏布局
3.清除浮动。
清除浮动
清除浮动主要是为了解决,父元素因为子级元素浮动引起的内部高度为0的问题。
清除浮动的方法
1. 额外标签法
在最后一个浮动标签后,新加一个标签,给其设置clear:both;(不推荐)
优点:通俗易懂,方便
缺点:添加无意义标签,语义化差
<style> .div1 {background: #00a2d4; } .left {float: left;width: 200px;height: 200px;background: #9889c1; } .right {float: right;width: 200px;height: 200px;background: orangered; } .clear {clear: both; } </style></head><body><div class="div1"> <div class="left">Left</div> <div class="right">Right</div> <div class="clear"></div></div><div class="div2"></div></body>
2.父级添加overflow属性
通过触发BFC方式,实现清除浮动。(不推荐)
优点:代码简洁
缺点:内容增多的时候容易造成不会自动换行导致内容被隐藏掉,无法显示要溢出的元素
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> .div1 {background: #00a2d4;overflow: hidden; } .left {float: left;width: 200px;height: 200px;background: #9889c1; } .right {float: right;width: 200px;height: 200px;background: orangered; } </style></head><body><div class="div1"> <div class="left">Left</div> <div class="right">Right</div></div><div class="div2"></div></body></html>
3.使用after伪元素清除浮动(推荐使用)
优点:符合闭合浮动思想,结构语义化正确。
缺点:ie6-7不支持伪元素:after,使用zoom:1触发hasLayout。
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> .div1 {background: #00a2d4; } .left {float: left;width: 200px;height: 200px;background: #9889c1; } .right {float: right;width: 200px;height: 200px;background: orangered; } .clearfix:after {content: ""; /*内容为空*/display: block; /*转换为块级元素*/height: 0; /*高度为0*/clear: both; /*清除浮动*/visibility: hidden; /*隐藏盒子*/ } .clearfix {*zoom: 1; /*IE6\7的处理方式*/ } </style></head><body><div class="div1 clearfix"> <div class="left">Left</div> <div class="right">Right</div></div><div class="div2"></div></body></html>
4.使用before和after双伪元素清除浮动
优点:不仅可以清除浮动,也可以解决高度塌陷的问题(给父盒子添加类名clearfix)
缺点:用zoom:1触发hasLayout.
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> .div1 {background: #00a2d4; } .left {float: left;width: 200px;height: 200px;background: #9889c1; } .right {float: right;width: 200px;height: 200px;background: orangered; } .clearfix:after, .clearfix:before {content: "";display: table; } .clearfix:after {clear: both; } .clearfix {*zoom: 1; } </style></head><body><div class="div1 clearfix"> <div class="left">Left</div> <div class="right">Right</div></div><div class="div2"></div></body></html>
总结
到此这篇关于CSS 清除浮动、BFC的文章就介绍到这了,更多相关css 浮动 BFC内容请搜索以前的文章或继续浏览下面的相关文章,希望大家以后多多支持!
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号