CSS 与布局 / CSS Box Alignment · 一套对齐属性横跨所有布局 / 在 Flexbox 中的映射规则 待审核 4 / 6
in flexbox · 主轴 / 交叉轴

在 Flexbox 中的映射规则

Flex 是 Box Alignment 的例外模式。别的模式里 justify-* 恒等于行内轴、align-* 恒等于块轴,Flex 改用主轴与交叉轴:justify-content 永远管主轴、align-* 永远管交叉轴,而主轴与交叉轴本身随 flex-direction 翻转。此外 Flex 没有 justify-selfjustify-items,主轴上无单格概念,要把单项沿主轴推开得用 margin: auto。本页只讲这套映射规则,对齐与溢出的边界情形见 flex 系列的深入页。

1 · 主轴与交叉轴的互换

容器定宽定高,主轴与交叉轴都有剩余空间,item 高度不一以便观察交叉轴对齐。

图 1-1 · 切换 flex-direction 时主轴与交叉轴的互换。焦点项 A 另演示 margin-inline-start: auto(在主轴上把它及其后各项推到末端)与 align-self

2 · 各对齐属性在 Flex 下的映射

flex-startflex-end 在此跟随 flex-direction,与 startend 的区别见参照系一页。
属性 作用轴 对象 说明
justify-content 主轴 容器到整组 分配主轴剩余空间,单行多行都作用。
align-items / align-self 交叉轴 容器 / 单项 每个项在所在行的交叉轴上对齐,align-self 覆盖单项。
align-content 交叉轴 容器到行间 仅在多行时分配行间空间,即 flex-wrap: wrap 且确实换行;单行无效。
justify-items / justify-self 被忽略。单项主轴对齐用 margin: auto 代替。
gap 两轴 项之间 项间固定间距,先扣除再让 grow 与 shrink 分配剩余。

与统一模型的差异集中在两点。其一是轴绑定不同:统一模型里 justify 对应行内轴、align 对应块轴,Flex 里 justify 对应主轴、align 对应交叉轴,且随 flex-direction 翻转。其二是缺两个属性:justify-selfjustify-items 在 Flex 中被忽略,它们属于 Grid。

建议 · 对齐的边界情形另有专题,本页不重复:对齐属性全景居中即截断centeroverflow 的冲突)、safe 与 unsafe(给对齐加上「别切到内容」的约束)。