# CSS中的BFC和IFC | 青训营笔记
这是我参与「第四届青训营 」笔记创作活动的第6天
1. 什么是FC?
FC是指Fomatting Context,意思是格式化上下文布局,它是CSS2.1规范中的一个概念。FC是页面中的一块渲染区域,有一套渲染规则,决定了其子元素将怎样定位,以及和其它元素的关系和相互作用。其中常见的FC有BFC和IFC。
2. BFC
BFC(Block Fomatting Context)叫做“块级格式化上下文”。
BFC内的排版规则
-
盒子从上到下摆放
内部的盒子会在垂直方向,一个个地放置;
-
垂直margin合并
盒子垂直方向的距离由margin决定,属于同一个BFC的两个相邻Box的上下margin会发生重叠;
-
BFC内盒子的margin不会与外面的合并
BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之也如此;
-
BFC不会和浮动元素重叠
BFC的区域不会与float重叠。计算BFC的高度时,浮动元素也参与计算。
·
div
{
width:300px;
}
.aside {
width: 100px;
height: 150px;
float: left;
background: black;
}
.main {
height:200px;
background-color:red;
}
`
满足了每个元素的左边,与包含的盒子的左边相接触,即使存在浮动也是这样的规则。
3. IFC
IFC(Inline Formatting Context)叫做“行内格式化上下文”。只包含行级盒子的容器会创建一个IFC。
IFC内的排版规则
-
盒子在一行内水平摆放
行内盒水平排列为一行,当容器宽度不够时就会换行
-
一行放不下时,换行显示
行盒的宽度由包含块和存在的浮动来决定 行盒的高度由内部元素中实际高度最高的元素计算出来
-
text-align决定一行内盒子的水平对齐
水平方向的对齐通过 text-align 来设置,默认对齐为left 左对齐(当所有盒的总宽度小于行盒的宽度时)
-
verti-align决定一个盒子在行内的垂直对齐
垂直方向的对齐通过 vertical-align 来设置,默认对齐为 baseline 基线对齐(当最高的行内盒的高度小于行盒的高度时)
-
避开浮动(float)元素 行盒一般左右边都贴紧其包含块,但是会因为浮动盒(float 元素)的存在而发生变化。浮动盒会位于包含块边缘与行盒边缘之间,这样行盒的可用宽度就小于包含块的宽度
个人体会总结
BFC和IFC可理解为不同渲染区域遵循的不同规则,学习BFC和IFC有助于更好地掌握CSS样式。