CSS 与布局 / CSS Box Alignment · 一套对齐属性横跨所有布局 / 在多列布局中的列盒对齐 待审核 6 / 6
in multicol · 列盒作为对象

在多列布局中的列盒对齐

多列(multicol)是 Box Alignment 最晚、支持最薄的一块。它的特别之处在于对齐对象是 column box(列盒):当容器够宽、按 column-width 算出的列占不满容器时,行内方向会多出剩余空间,此时 justify-content 可把这些列盒整体摆放或分散,align-content 则沿块轴摆放。

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

1 · 列盒作为对齐对象

容器定宽定高、column-width: 78px,内容只够铺成几列而列宽之和小于容器,行内轴因而有剩余空间。

图 1-1 · 列盒在 justify-content 各取值下的摆放。可切换取值观察列盒靠左、居中或两端铺开,并调 column-gap 看列间缝变化,注意其默认值非 0。
多列对齐是各布局模式里落地最晚的,以页顶横幅的实测结论为准。
属性 作用
justify-content 行内 列宽之和小于容器时,把列盒整体摆放或分散到行内方向的剩余空间。
align-content 列高之和小于容器高时,沿块轴摆放列内容。
column-gap / gap 行内 列间缝,初始值 normal,在多列里的使用值是 1em;空间分布带来的额外间隔叠加其上。
*-items / *-self 不适用。多列没有「单个 item 的格子」概念,只有列盒这一层。

注 ·「多列的 column-gap 初始值是 1em」这个说法要拆开看。初始值与计算值都是 normal,实测 Chrome 151 下三种模式的计算值一律为 normal;差别在使用值:多列容器里量得的实际列缝随字号变化,font-size: 20px 时为 20px、32px 时为 32px,即 1em,而 Flex 与 Grid 里恒为 0(核对于 2026-08)。

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