块级格式化上下文
全称 Block Formatting Context 简称BFC
它规定了在该区域中,常规流块盒的布局。
- 常规流块盒水平方向上,必须撑满包含块。
- 常规流块盒在包含块的垂直方向上依次摆放。
- 常规流块盒若外边距无缝相邻,则进行外边距合并。
- 常规流块盒的自动高度和摆放位置,无视浮动元素。
bfc是一块独立的渲染区域,它规定了在该区域中,常规流块盒的布局。
BFC渲染区域:
这个区域由某个HTML元素创建,以下元素会在其内部创建BFC区域:
根元素:意味着,<html>元素创建的BFC区域,覆盖了网页中所有元素。
浮动和绝对定位元素: float值为left或者right
,position值为absolute或者fixed
overflow不等于visible的块盒:overflow值大多用hidden,对其他影响较小
不同的BFC区域,它们进行渲染时互不干扰,创建BFC的元素,隔绝了它内部和外部的联系,内部渲染不会影响到外部。
具体规则:
创建BFC的元素,它的自动高度需要计算浮动元素
解决了浮动造成的高度坍塌
创建BFC的元素,它的边框盒不会与浮动元素重叠
可以用于布局,如两栏布局,左侧宽度固定,右侧宽度自适应auto
创建BFC的元素,不会和它的子元素进行外边距合并
解决了margin外边距塌陷