标准答案

  1. BFC 是 Block Formatting Context,中文叫块级格式化上下文,可以理解成一个独立的块级布局环境。
  2. BFC 内部的块盒按规则垂直排列,内部布局不会随便影响外部,外部浮动也不会侵入它的布局区域。
  3. BFC 常用来包含内部浮动,解决父元素高度塌陷。
  4. 它也能阻止 margin 折叠,并让元素避开旁边的浮动元素。
  5. 常见触发方式有 display: flow-root、overflow 不为 visible、inline-block、table-cell、flex/grid item、absolute/fixed。现代代码里只想创建 BFC 时,优先用 display: flow-root。

题目解析

这题不要背一长串触发条件,而要先说明 BFC 解决什么布局问题。面试官通常想看你是否真的遇到过浮动、高度塌陷和 margin 折叠。

BFC 不是万能布局方案。现代页面更常用 flex、grid,但 BFC 对理解旧布局和 CSS 规则仍然很重要。

代码示例

display: flow-root 可以让父元素包含内部浮动。

CSS
.card {
  display: flow-root;
}

.cover {
  float: left;
  width: 120px;
  height: 80px;
}

常见误区

  • 只背触发条件,不知道 BFC 解决父元素高度塌陷和 margin 折叠。
  • 所有场景都用 overflow: hidden 创建 BFC,结果内容或阴影被裁剪。
  • 把 BFC 和层叠上下文混为一谈。BFC 处理布局流,层叠上下文处理绘制层级。

作者信息