about BFC

125 阅读1分钟

块级格式化上下文,


是一个独立的渲染区域,让处于 BFC 内部的元素与外部的元素相互隔离,使内外元素的定位不会相互影响。

触发条件

  • 根元素
  • position: absolute/fixed
  • display: inline-block / table
  • float 元素
  • ovevflow !== visible
规则
1. 属于同一个 BFC 的两个相邻 Box 垂直排列


2. 属于同一个 BFC 的两个相邻 Box 的 margin 会发生重叠

  • 下10,上20 ==> 20,
  • 下-10,上20 ===> 10,
  • 上-10 下-20 ===〉-20

口诀:都是正数取大值,都是负数取小值,一正一负取和

  1. BFC 中子元素的 margin box 的左边, 与包含块 (BFC) border box的左边相接触 (子元素 absolute 除外)


  1. BFC 的区域不会与 float 的元素区域重叠


5. 计算 BFC 的高度时,浮动子元素也参与计算
6. 文字层不会被浮动层覆盖,环绕于周围(图 见4,粉色盒子为浮动元素)


应用
  • 阻止margin重叠
  • 可以包含浮动元素 —— 清除内部浮动(清除浮动的原理是两个div都位于同一个 BFC 区域之中)
  • 自适应两栏布局
  • 可以阻止元素被浮动元素覆盖