BFC
(Block Formatting Context),即块级格式化上下文,它是页面中的一块渲染区域,并且有一套属于自己的渲染规则他是一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然
BFC
目的是形成一个相对于外界完全独立的空间,让内部的子元素不会影响到外部的元素
二、触发条件
触发BFC
的条件包含不限于:
-
根元素,即HTML元素
-
浮动元素:float值为left、right
-
overflow值不为 visible,为 auto、scroll、hidden
-
display的值为inline-block、flex
-
position的值为absolute
三、应用场景
利用BFC
的特性,我们将BFC
应用在以下场景:
防止margin重叠(塌陷)
<style>
p {
color: #f55;
background: #fcc;
width: 200px;
line-height: 100px;
text-align:center;
margin: 100px;
}
</style>
<body>
<p>Haha</p >
<p>Hehe</p >
</body>
两个p
元素之间的距离为100px
,发生了margin
重叠(塌陷),以最大的为准,如果第一个P的margin
为80的话,两个P之间的距离还是100,以最大的为准。
前面讲到,同一个BFC
的俩个相邻的盒子的margin
会发生重叠
可以在p
外面包裹一层容器,并触发这个容器生成一个BFC
,那么两个p
就不属于同一个BFC
,则不会出现margin
重叠
<style>
.wrap {
overflow: hidden;// 新的BFC
}
p {
color: #f55;
background: #fcc;
width: 200px;
line-height: 100px;
text-align:center;
margin: 100px;
}
</style>
<body>
<p>Haha</p >
<div class="wrap">
<p>Hehe</p >
</div>
</body>