grid-template-columns 用于定义网格列宽,支持固定单位(如 px)、弹性单位(fr)、auto、minmax() 和 repeat() 函数,可灵活实现等分、不等比、响应式及重复模式布局,关键在于理解各值的空间分配机制。

CSS 中 grid-template-columns 用于定义网格布局中每一列的宽度。你可以通过多种方式灵活设置列宽,适应不同的布局需求。
使用固定单位定义列宽
可以使用像素(px)、厘米(cm)等固定单位来精确控制每列的宽度。
• 每列宽 100px:grid-template-columns: 100px 100px 100px; — 创建三列,每列都是 100px 宽。
• 不等宽列:grid-template-columns: 80px 120px 50px; — 三列分别设置不同固定宽度。
立即学习“前端免费学习笔记(深入)”;
使用弹性单位 fr 分配剩余空间
fr 单位表示“份数”,用于按比例分配容器中的可用空间。
• 等分三列:grid-template-columns: 1fr 1fr 1fr; — 容器被平均分为三列。
• 不等比划分:grid-template-columns: 2fr 1fr; — 第一列占 2/3 空间,第二列占 1/3。
使用 auto 和 minmax 动态控制列宽
结合 auto、minmax() 可实现响应式或自适应列宽。
• 自动适应内容:grid-template-columns: auto 1fr; — 第一列根据内容宽度,第二列填充剩余空间。
• 设置最小最大宽度:grid-template-columns: repeat(3, minmax(100px, 1fr)); — 每列最小 100px,最大可伸展至等分空间。
使用 repeat() 简化重复定义
当有多列相同或规律排列时,repeat() 能简化代码。
• 重复相同列:grid-template-columns: repeat(4, 100px); — 四列,每列 100px。
• 重复模式:grid-template-columns: repeat(2, 1fr 2fr); — 相当于 1fr 2fr 1fr 2fr。
基本上就这些。合理组合 fr、固定值、auto 和函数,就能实现各种复杂又灵活的网格布局。关键是理解每个单位如何参与空间分配。不复杂但容易忽略细节。










