BFC 全称为 块格式化上下文 (Block Formatting Context) 。
作用:一般浮动元素会脱离文档流,而使用BFC可以使浮动元素包裹在BFC内部。
块格式化上下文(Block Formatting Context,BFC) 是Web页面的可视化CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。
下列方式会创建块格式化上下文:
- 根元素(
<html>
)- 浮动元素(元素的
float
不是none
)- 绝对定位元素(元素的
position
为absolute
或fixed
)- 行内块元素(元素的
display
为inline-block
)- 表格单元格(元素的
display
为table-cell
,HTML表格单元格默认为该值)- 表格标题(元素的
display
为table-caption
,HTML表格标题默认为该值)- 匿名表格单元格元素(元素的
display
为table、``table-row
、table-row-group、``table-header-group、``table-footer-group
(分别是HTML table、row、tbody、thead、tfoot的默认属性)或inline-table
)overflow
值不为visible
的块元素display
值为[flow-root](https://drafts.csswg.org/css-display/#valdef-display-flow-root)
的元素contain
值为layout
、content
或 paint 的元素- 弹性元素(
display
为flex
或inline-flex
元素的直接子元素)- 网格元素(
display
为grid
或inline-grid
元素的直接子元素)- 多列容器(元素的
column-count
或column-width
不为auto,包括 ``column-count
为1
)column-span
为all
的元素始终会创建一个新的BFC,即使该元素没有包裹在一个多列容器中(标准变更,Chrome bug)。块格式化上下文包含创建它的元素内部的所有内容.
块格式化上下文对于定位 (参见 float) 与清除浮动 (参见 clear) 很重要。定位和清除浮动的样式规则只适用于处于同一块格式化上下文内的元素。浮动不会影响其它块格式化上下文中元素的布局,并且清除浮动只能清除同一块格式化上下文中在它前面的元素的浮动。
网友评论