BFC

55 阅读1分钟

FC(Formatting Context)

FC指格式化上下文,FC会产生一个渲染区域,这个区域有自己的渲染规则。它决定了子元素如何定位、和区域外的其他元素的关系、相互作用。

CSS2.1规定了BFC(Block Formatting Context)和IFC(Inline Formatting Context)

CSS3.0新增GFC(Grid Formatting Context)和FFC(Flex Formatting Context)

BFC(Block Formatting Context)

块级格式化上下文,它是一个独立的渲染区域,仅有Block-level box 参与,它规定了Block-leve box 如何布局,并不会影响这个区域外的元素。

BFC生成条件

  • 根元素
  • float的值不为none
  • overflow不为visible
  • display的值为inlie-block,table-cell,table-caption
  • position为absolute,fixed

BFC渲染规则

  • 子元素会在垂直方向上一个个排列
  • 子元素的margin会发生重叠,margin值由最大的值决定
  • 每个子元素的左外边距与包含块的左边界接触,除了position为absolute和fixed可以超出包含块。
  • BFC的区域和float的元素重叠
  • 计算BFC高度时,浮动元素也参与计算
  • BFC是一个独立容器,不会影响外界元素,外界元素影响不了容器

BFC应用

  • 防止margin重叠
  • 防止浮动塌陷
  • 自适应布局

因为BFC不会影响到外部的元素,所以当内部元素宽/高度总和超出包含块的尺寸时,内部元素会被压缩。

参考文献:

juejin.cn/post/684490…