BFC(Block Formatting Context) 块级格式化上下文,是 Web 页面中盒模型布局的 CSS 渲染模式,指一个独立的渲染区域或者说是一个隔离的独立容器。可以用来解决两相邻元素间距发生重叠、清除浮动等问题。
形成 BFC 的条件
- 浮动元素,float 除 none 以外的值
- 定位元素,position 为 absolute 或 fixed
- 非块盒的块容器,display 为 inline-block 或 table-cell 或 table-caption
- overflow 除 visible 以外的值(hidden,auto,scroll)
BFC 的特性
- 内部的 Box 会在垂直方向上一个接一个的放置
- BFC 就是页面上的一个独立容器,容器里面的子元素不会影响外面元素
- 垂直方向的距离由 margin 决定,属于同一个 BFC 的相邻 Box 的 margin 会发生重叠
- 元素的 margin box 的左边与包含块 border box 的左边相接触,存在浮动也是如此
- BFC 的区域不会与 float 的元素区域重叠
- 计算 BFC 的高度时,浮动元素也参与计算