← 📐 CSS Box Alignment · 一套对齐属性,横跨所有布局 / 在多列布局中:被对齐的不是元素,而是「列盒」 待审核 6 / 6
in multicol · 列盒作为对象

在多列布局中:被对齐的不是元素,而是「列盒」

多列(multicol)是 Box Alignment 最晚、支持最薄的一块。它的特别之处在于对齐对象 = column box(列盒):当容器够宽、按 column-width 算出的列占不满容器时,会多出行内方向的剩余空间——此时 justify-content(行内轴)可把这些列盒整体摆放 / 分散,align-content(块轴)则沿块轴摆放。还有个历史细节:column-gap 在多列里初始值是 1em(其余模式是 0)。下方横幅是对当前浏览器的实测。

对象层级变了: Flex/Grid 对齐的是「项」,多列对齐的是「列盒」——容器是 multicol 的内容盒、subject 是浏览器生成的一个个列。空间分布(space-between 等)产生的额外间隔会叠加到列间缝上,使实际缝宽超过 column-gap 指定值。

1 · 列占不满容器时,justify-content 分配列盒

容器定宽定高、column-width: 78px,内容只够铺成几列、列宽之和小于容器 → 行内轴有剩余空间。切换 justify-content 看这几个列盒如何在容器里靠左 / 居中 / 两端铺开;调 column-gap 看列间缝变化(注意默认非 0)。

多列对齐是各布局模式里支持最晚的;以页顶横幅的实测结论为准。
属性 作用
justify-content 行内 列宽之和 < 容器时,把列盒整体摆放 / 分散到行内方向的剩余空间。
align-content 沿块轴摆放列内容(列高之和 < 容器高时)。
column-gap / gap 行内 列间缝。初始值 1em(多列特例);空间分布带来的额外间隔会叠加其上。
*-items / *-self 不适用:多列没有「单个 item 的格子」概念,只有列盒这一层。

放进全局看: 同一个 justify-content,在 Flex 里分配主轴上的、Grid 里分配列轨、多列里分配列盒——对象不同、轴的归属不同,但「把一组对齐对象在容器剩余空间里摆放」这个统一语义不变。这正是 Box Alignment 把对齐从各布局里抽象出来的价值。