BFC/IFC
CSS 有 3 种定位方式:
- 常规流 (Normal flow)
- BFC (Block Formatting Context,块级排版上下文)
- IFC (Inline Formatting Context,行级排版上下文)
- 相对定位 (Relative positioning)
- table 排版上下文
- flex 排版上下文
- grid 排版上下文
- 浮动 (Floats)
- 绝对定位 (Absolute positioning)
absolute
fixed
块级/行级盒子
display
与 BFC/IFC 相关的取值:
block
:生成块级盒子 (block-level box),一个盒子占一行inline
:生成行级盒子 (inline-level box),与其他行级盒子摆放在一行- 不能设置
width
和height
- 不能设置
inline-block
:生成行级盒子,可以设置宽高,作为一个整体不会被拆成多行none
:排版时被忽略
BFC
以下元素会创建一个 BFC:
<html>
inline-block
、浮动、绝对定位- flex 子项和 grid 子项
overflow
不是visible
的块级盒子display: flow-root;
排版规则:
- 盒子从上到下排列
- 垂直 margin 合并
- BFC 内 margin 不会与外界 margin 合并
- 不会与浮动元素重叠
IFC
只包含行级盒子的容器元素会创建一个 IFC。
排版规则:
- 盒子在一行内水平排列,一行放不下时换行显示
text-align
决定一行内盒子的水平对齐vertical-align
决定一个盒子在行内的垂直对齐- 环绕浮动元素