格式上下文,它定义框内部的元素渲染规则,比较抽象,好比markdown
FC像是一个大箱子,里面装有不少元素flex
箱子能够隔开里面的元素和外面的元素(因此外部并不会影响FC内部的渲染)spa
内部的规则能够是:如何定位,宽高计算,margin折叠等等code
不一样类型的框参与的FC类型不一样,好比块级框对应BFC
,行内框对应IFC
orm
注意,并非说全部的框都会产生FC,而是符合特定条件才会产生,只有产生了对应的FC后才会应用对应渲染规则it
在块格式化上下文中io
每个元素左外边与包含块的左边相接触(对于从右到左的格式化,右外边接触右边)table
即便存在浮动也是如此(因此浮动元素正常会直接贴近它的包含块的左边,与普通元素重合)class
除非这个元素也建立了一个新的BFCimport
box
在垂直方向,一个接一个的放置margin
决定,属于同一个BFC的两个box间的margin会重叠float box
重叠(可用于排版)float
属性不为none
position
为absolute
或fixed
display
为inline-block
, flex
, inline-flex
,table
,table-cell
,table-caption
overflow
不为visible
这里提下,display: table
,它自己不产生BFC,可是它会产生匿名框(包含display: table-cell
的框),而这个匿名框产生BFC