2024-01-12 20:34:14
使用 CSS Grid 的 grid-auto-flow: column 属性可实现先列后行的自适应排列。通过结合 grid-template-columns 定义列数和宽度,并设置 grid-auto-flow: column,网格项目会优先填充列,当一列填满后自动换行到下一行,从而根据元素数量动态调整行数。
实现步骤定义容器为网格布局使用 display: grid 将容器设置为网格布局,为后续属性生效提供基础。
设置列数和宽度通过 grid-template-columns: repeat(3, 1fr) 定义三列,每列宽度为 1fr(即等分可用空间)。
repeat(3, 1fr) 表示重复三次 1fr,生成三列等宽的布局。
若需不同列宽,可调整比例(如 repeat(3, 2fr 1fr 3fr) 或直接指定像素值)。
启用列优先填充设置 grid-auto-flow: column,强制网格项目按列顺序填充。
默认情况下,网格项目按行填充(grid-auto-flow: row),此属性会覆盖默认行为。
当一列填满后,项目会自动换行到下一列的起始位置,形成新的行。
元素数量为 11 时:排列顺序为 1 5 9(第一列)、2 6 10(第二列)、3 7 11(第三列)、4 8(自动换行到第四行)。实际显示为三列,行数根据元素数量动态调整。
元素数量为 8 时:排列顺序为 1 4 7(第一列)、2 5 8(第二列)、3 6(第三列)。剩余空间由 1fr 自动分配,保持列宽一致。
通过以上方法,可高效实现列优先的自适应网格布局,适用于需要按列填充内容的场景(如图片墙、数据表格等)。