常规流是什么?
- flow layout: 浏览器默认的布局模式;
- 无特殊定位/浮动时, 所有元素按常规流排布;
块级盒与内联盒在常规流中如何排列?
- 块级盒: inline size 默认填满父元素 inline 方向, 沿 block flow 依次排列;
- 内联盒: 沿 inline flow 依次排列, 填满父元素才换行;
- 方向: 均依赖父元素的 writing-mode;
- 内联盒尺寸与盒模型行为见 display 与盒类型;
BFC 有什么特点?
- 内部 block box 按常规流在 block axis 排列;
- 隔离内部与外部浮动影响;
- 阻止内部 margin 与外部 margin collapse;
- 但内部相邻 block box 之间仍可能 collapse;
- 高度计算包括浮动子元素, 防止浮动元素溢出;
如何创建 BFC?
- 根元素;
float 非 none;
position: absolute 或 fixed;
display: flex、grid、flow-root、inline-block 等;
overflow 非 visible/clip;
BFC 有哪些应用场景?
- 清除浮动;
- 解决 margin collapse, 把其中一个元素包进 BFC;
- 实现自适应多栏布局;