导读:本期聚焦于小伙伴创作的《CSS布局中grid-template-columns如何应用?网格列定义技巧有哪些》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《CSS布局中grid-template-columns如何应用?网格列定义技巧有哪些》有用,将其分享出去将是对创作者最好的鼓励。

CSS网格布局是现代前端布局的重要方案,grid-template-columns属性用于定义网格容器的列轨道大小,直接决定网格布局的列结构和宽度分配规则,是网格布局中最常用的属性之一。

CSS布局中grid-template-columns如何应用?网格列定义技巧有哪些

grid-template-columns基础语法

该属性是网格容器的属性,取值为空格分隔的轨道大小列表,每个值对应一列的宽度,列表长度就是网格的列数。基础语法如下:

.container {
  display: grid;
  /* 定义3列,每列宽度200px */
  grid-template-columns: 200px 200px 200px;
}

上述代码会创建一个3列的网格,每列固定宽度200px,当容器宽度大于600px时,多余空间会留白,小于600px时内容会溢出。

常用取值类型

固定像素取值

使用固定像素值定义列宽,列宽不会随容器大小变化,适合需要固定尺寸的元素布局,比如侧边栏固定宽度场景。

/* 左侧边栏固定200px,右侧内容区固定800px */
.side-layout {
  display: grid;
  grid-template-columns: 200px 800px;
}

百分比取值

百分比基于网格容器的宽度计算,列宽会随容器宽度变化,适合需要按比例分配空间的布局。

/* 两列各占容器宽度的50% */
.half-layout {
  display: grid;
  grid-template-columns: 50% 50%;
}

fr单位取值

fr是网格布局特有的分数单位,代表剩余可用空间的分配比例,会先扣除固定尺寸列的空间,再按比例分配剩余空间,适合弹性布局场景。

/* 左侧固定200px,右侧剩余空间分3份,内容区占2份,空白区占1份 */
.flex-layout {
  display: grid;
  grid-template-columns: 200px 2fr 1fr;
}

auto取值

auto表示列宽由内容自然撑开,或者占据剩余可用空间,具体表现取决于其他列的取值情况。

/* 第一列内容撑开,第二列占剩余空间 */
.auto-layout {
  display: grid;
  grid-template-columns: auto 1fr;
}

实用定义技巧

使用repeat函数简化重复定义

当多列取值相同时,可以使用repeat(重复次数, 列宽)函数简化代码,避免重复书写相同的值。

/* 等价于 grid-template-columns: 1fr 1fr 1fr 1fr */
.equal-four-col {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
}

/* 等价于 grid-template-columns: 200px 1fr 200px 1fr */
.mixed-repeat {
  display: grid;
  grid-template-columns: repeat(2, 200px 1fr);
}

结合minmax实现自适应列宽

使用minmax(最小值, 最大值)函数可以定义列宽的取值范围,列宽会在最小值和最大值之间自适应,提升布局的灵活性。

/* 列宽最小200px,最大占1份剩余空间,容器变小时列宽不会小于200px */
.adaptive-col {
  display: grid;
  grid-template-columns: repeat(3, minmax(200px, 1fr));
}

使用auto-fill和auto-fit实现自动列数

auto-fill会根据容器宽度自动计算能放下多少列,尽可能多放列;auto-fit会合并空列,让现有列占据更多空间,适合响应式布局。

/* 容器宽度足够时放多列,每列最小200px,最大1fr */
.auto-fill-layout {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 16px;
}

/* 和auto-fill类似,但空列会被折叠,现有列会扩展填充空间 */
.auto-fit-layout {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 16px;
}

常见问题说明

如果定义的列宽总和超过容器宽度,网格会默认溢出容器,不会自动换行,需要配合grid-auto-flow: row或者调整列宽取值避免溢出。另外,fr单位和固定单位混合使用时,会先计算固定单位的总宽度,再用剩余空间分配fr单位的占比,这个计算逻辑需要特别注意。

注意:grid-template-columns只定义列轨道的初始大小,后续可以通过grid-column属性调整单个网格项跨越的列数,实现更复杂的布局效果。

grid-template-columnsCSS_grid网格布局列定义修改时间:2026-07-08 06:36:24

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。