1.BFC
BFC直译为“块级格式化上下文”。它是一个独立的渲染区域,只有Block-level box(块)参与,它规定内部的Block-level Box如何布局,并且与这个区域外部毫不相干。
2.BFC的布局规则
1)内部的Box会在垂直方向,一个接一个地放置。
2)Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠
3)每个元素的margin-box的左边,与包含块border box的左边相接触
4)BFC的区域不会与float box重叠。
5)BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。
6)计算BFC的高度时,浮动元素也参与计算。
3、哪些元素或属性能触发BFC
1)根元素HTML
2)float属性不为none
3)position为absolute或fixed时
4)display为inline-block,table-cell、table-caption、flex、inline-flex
5)overflow不为visible
4.BFC的作用及原理
1)自适应两栏布局:给right添加overflow:hidden;
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
.left{width:200px; height:500px; background:#f00; float:left;}
.right{height:500px; background:#ff0; overflow:hidden;}
</style>
</head>
<body>
<div class="left">
111111111111111
</div>
<div class="right">
222222222222222222
</div>
</body>
</html>
2.清除内部浮动 :给div添加overflow:hidden; (和解决高度塌陷的问题原理一样)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
div{ width:500px; background:#f00; overflow:hidden;}
p{height:100px; width:100px; background:#ff0; float:left;border:1px solid #000;}
</style>
</head>
<body>
<div>
<p></p>
<p></p>
</div>
</body>
</html>
3)防止margin重叠:给第二个p添加一个盒子并添加overflow:hidden;
没给p标签添加div时两个p标签之间的距离是30px,添加后解决了margin重叠问题,p标签之间的距离会变成60px;
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
p{width:100px; height:100px; background:#f00; margin-top:30px;margin-bottom:30px;}
div{overflow:hidden;}
</style>
</head>
<body>
<p></p>
<div>
<p></p>
</div>
</body>
</html>