BFC(块级格式化上下文)是一个独立的渲染区域,内部元素的布局不受外部影响,也不会影响外部。触发方式常见的有:根元素、overflowvisible(如 hidden/auto)、floatnonedisplay: inline-block / flow-root / flex / grid 容器、position: absolute/fixed 等。

它解决三类经典问题:

  1. 清除浮动(高度塌陷):父元素形成 BFC 后会计算浮动子元素的高度,例如给父级 overflow: hidden
  2. 阻止 margin 折叠:处于同一 BFC 的相邻块级元素垂直 margin 会合并,把它们放进不同 BFC(如外包一层 overflow: hidden)即可隔离;
  3. 避免文字环绕浮动元素:给右侧内容触发 BFC,它会整体避开浮动盒子,实现两栏自适应布局。

易错点:overflow: hidden 触发 BFC 但可能裁剪内容,display: flow-root 是语义最干净的方式。追问方向:BFC 与 IFC 的区别、为什么 BFC 内部 float 仍会影响布局但外部不受影响。