什么是 BFC
BFC 全称 Block Formatting Context 即块级格式上下文
,简单的说,BFC 是页面上的一个隔离的独立容器,不受外界干扰或干扰外界。
可以把 BFC 理解为一个封闭的大箱子,箱子内部的元素无论如何翻江倒海,都不会影响到外部。
触发 BFC
body
根元素- 浮动元素:
float
除none
以外的值 - 绝对定位元素:
position
(absolute
、fixed
) display
为inline-block
、table-cells
、flex
overflow
除了visible
以外的值 (hidden
、auto
、scroll
)
BFC 的应用场景
- 清除浮动
- 避免某元素被浮动元素覆盖
- 阻止外边距重叠
BFC 可以包含浮动的元素(清除浮动)
浮动元素会脱离文档流
1 |
|
可以看到容器内元素浮动,脱离文档流,所以容器只剩下 2px border 高度。并且和容器同级的一个元素被浮动元素覆盖了。
我们试着触发容器的 BFC, 在容器上添加overflow: hidden
1 |
|
我们可以看到,容器包裹住了脱离文档流的元素,并且和另一个方块元素划清了界线。
避免某元素被浮动元素覆盖
来看这个栗子:
1 |
|
我们可以看到,第一个元素左浮动,第二个元素被浮动元素覆盖,并且文字产生了环绕效果,当我们给第二元素加上overflow: hidden
之后
1 |
|
这个方法可以用来实现两列自适应布局,左边的宽度固定,右边的内容自适应宽度(去掉上面右边内容的宽度)。
阻止外边距重叠
外边距合并:
1 |
|
重合的 100px 合并了,如果想要避免外边距的重叠,可以将其放在不同的 BFC 容器
中:
1 |
|
有了爸爸撑腰的元素有了底气,强行把开发商划分的公共区域变成了私人区域。
以上就是BFC的全部内容了。