Skip to content

BFC:块级格式化上下文与普通流隔离

主题边界

  • BFC 是 CSS 视觉格式化模型中的一种块级格式化上下文,用来约束内部盒子的布局与浮动影响范围。
  • 理解 BFC 要把它放回 normal flow、float 与 margin collapsing 的规则里。

机制与流程

  • 创建 BFC 的元素会形成独立布局容器,内部浮动不会跑到外部参与同一普通流计算。
  • 触发条件包括 overflowvisibledisplay: flow-root、浮动元素、绝对定位元素、flex/grid 容器等。
  • BFC 容器会阻止与外部元素的垂直 margin 折叠,并在计算自身高度时把内部浮动纳入包裹范围。

关键差异

  • BFC 解决的是普通流与浮动相互干扰的问题,不等于所有布局隔离。
  • flow-root 是最语义化的 BFC 触发方式,比通过 overflow: hidden 顺带裁剪内容更明确。

边界条件

  • overflow: hidden 当 BFC 万能解会引入裁剪、滚动条或阴影截断副作用。
  • Flex 与 Grid 容器自身形成新的格式化上下文,但内部子项的布局规则已经不是普通块格式化流。

工程落点

  • 老项目中“清除浮动”本质是给父元素制造一个能包住 float 的 BFC。
  • 现代布局里 BFC 仍然重要,因为它直接影响 margin collapsing、浮动环绕和局部布局隔离。

相关主题