CSS中的BFC和IFC| 青训营笔记

135 阅读2分钟

# 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;

} 

`

image.png

满足了每个元素的左边,与包含的盒子的左边相接触,即使存在浮动也是这样的规则。

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样式。