格式化上下文
- 根元素(
<html>
) - 浮动元素(
float
不为none
) - 绝对定位元素(
position
值为absolute
或fixed
) - 行内元素(
display
为inline-block
) - 表格单元格(
display
为table-cell
) - 表格标题(
display
为table-caption
) - 匿名表格单元格元素,通过元素
display
为table
,table-row
,table-row-group
,table-header-group
,table-footer-group
,inline-table
隐式创建。 -
overflow
不为visible
-
display
为flow-root
-
contain
为layout
,content
,paint
- 弹性元素(
display
为flex
或inline-flex
元素的直接子级),如果它们自身既不是flex
、grid
或table
容器 - 网格元素(
display
为grid
或inline-grid
元素的直接子级),如果它们自身既不是flex
、grid
或table
容器 - 多列容器(
column-count
或者column-width
不为auto
) -
column-span
为all
的元素始终会创建一个新的BFC,即使该元素没有包裹在一个多列容器中
块格式化上下文包含创建它的元素内部的所有内容.
块格式化上下文对浮动定位(参见 float
)与清除浮动(参见 clear
)都很重要。浮动定位和清除浮动时只会应用于同一个BFC内的元素。浮动不会影响其它BFC中元素的布局,而清除浮动只能清除同一BFC中在它前面的元素的浮动。外边距折叠(Margin collapsing)也只会发生在属于同一BFC的块级元素之间。