BFC与IFC

BFC与IFC
Breezli盒子
格式化上下文
外部显示类型(display-outside)
1 | 规定盒子如何与统一格式上下文中的其他元素一起显示 |
内部显示类型( display-inside )
1 | 规定盒子内部布局方式,比如 |
BFC
块级格式化上下文
FC(Formatting Context)(格式化上下文)
所有的盒子都属于FC
可能属于一个BFC(block)(div/p/h1)、也可能是IFC(inline)(a/span/i/img)
会生成BFC的情况
BFC的作用
帮助盒子一个挨着一个沿着垂直方向排布
margin就是由BFC来解析的
两个盒子都设置margin时候会折叠,就是BFC在起作用
1 | 在同一个BFC里,两个盒子的margin才会折叠 |
1 | HTML可以形成标准流,因为本身就是一个独立的BFC环境 |
1 | 在BFC中,每个元素的左边缘是紧挨着包含块的左边缘的 |
BFC可以解决
1 | margin的折叠问题 |
形成新的BFC
1 | //只要overflow: !!不是!! visible |
解决折叠问题
1 | //父级包裹两个元素 |
解决浮动高度塌陷
条件
1 | //父元素触发BFC,形成独立块级格式化上下文 |
BFC的计算方式
1 | 1.如果只有inline-level,是行高的顶部和底部的距离 |
1 | 4.如果有浮动元素,那么会增加高度以包括这些浮动元素的下边缘 |
overflow
1 | overflow: visible; //可见 |
IFC
内联级格式化上下文
1 | 盒子会从包含块的顶部开始,按水平排列 |
对齐方式
层叠上下文
对HTML元素的三维构想,基于用户界面z轴的上下排布
1 | 对于浏览器渲染过程的“渲染层(render layer)” |
层叠水平
也就是层叠顺序
1 | z-index只能在同一个层叠上下文比较 |