BFC与IFC浅析
BFC
和IFC
-
都是针对
Box
设计的formating content
-
css
渲染时以box
为基本单位,box
的类型由元素的类型和display
的值决定。box分为block-level box
和inline-lever box
-
formating content
:不同渲染区域遵循的规则
BFC
--块级格式化上下文
什么时候形成?
-
overflow
不为visible
-
float
不为none
-
display
为flex table-cell table-caption inline-block inline-flex
-
根元素
BFC
特性
-
区域内部的块级元素在垂直方向上,一个接着一个的放置
-
区域不会与浮动元素重叠
-
元素之间的距离,由垂直方向的
margin
决定 -
区域内部计算高度时,浮动元素也纳入计算
-
是一个页面上隔离的容器,内部与外部互不影响
IFC
--行内格式上下文
-
inline
元素和inline-block
元素符合IFC
的布局规范
特性
-
区域中,内联元素在水平方向上一个接一个地放置。
-
其中,水平方向上的
margin, padding, border
是有效的。但垂直方向上无效 -
一个水平行中的所有行内块组成了名为
line box 行框
的矩形区域 -
line box
的高度由其包含的元素的最高高度计算得到。有时候会高于最高元素,比如基线对齐时。当line box
高度大于其中元素高度,其中的元素在垂直方向上的排列由vertical
决定 -
宽度由包含它的元素的宽度和包含它的元素中是否有浮动元素决定的。如果包含它的元素足够宽,
line box
的水平排布由text-align
决定,否则会将line box
截断并换行。如果line box