当前位置:首页 > 文章列表 > 文章 > 前端 > CSS网格布局中,grid-template是一个简写属性,用于同时设置grid-template-rows、grid-template-columns和grid-template-areas。它的使用方式如下:1.基本语法grid-template:[row-size]/[column-size];或者更完整的格式:grid-template:[grid-template-rows]/[grid
CSS网格布局中,grid-template是一个简写属性,用于同时设置grid-template-rows、grid-template-columns和grid-template-areas。它的使用方式如下:1.基本语法grid-template:[row-size]/[column-size];或者更完整的格式:grid-template:[grid-template-rows]/[grid
golang学习网今天将给大家带来《CSS网格布局如何设置grid-template属性》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习文章或者已经是大佬级别了,都非常欢迎也希望大家都能给我建议评论哈~希望能帮助到大家!
grid-template 是CSS Grid布局的核心复合属性,它通过一行代码同时定义网格的行、列结构和命名区域。1. 使用时需先设置容器为 display: grid 或 inline-grid;2. 它是 grid-template-rows、grid-template-columns 和 grid-template-areas 的简写形式;3. 语法上,/ 前定义行结构与区域名称,/ 后定义列结构;4. 支持 fr 单位实现弹性空间分配,minmax() 函数设定轨道尺寸范围,从而提升响应式设计能力;5. 可结合媒体查询实现不同屏幕尺寸下的布局切换,极大增强了布局的灵活性与可维护性。

grid-template 是CSS Grid布局里一个非常核心且功能强大的复合属性。它允许你在一行代码里同时定义网格的行(rows)、列(columns)结构以及命名区域(areas)。简单来说,它就像一个总设计师,一次性把整个页面的骨架和区域划分都确定下来,让布局变得异常直观和可读,远比我们以前用浮动或者flexbox来做复杂布局要省心得多。

解决方案:
要创建网格布局并配置 grid-template,你首先需要将容器元素设置为 display: grid 或 display: inline-grid。接着,就可以使用 grid-template 属性来定义网格的结构了。
grid-template 实际上是 grid-template-rows、grid-template-columns 和 grid-template-areas 这三个属性的简写。它的语法结构大致是这样的:

.container {
display: grid;
grid-template:
[row1-start] "header header header" 100px [row1-end]
[row2-start] "nav main aside" auto [row2-end]
[row3-start] "footer footer footer" 50px [row3-end]
/ 1fr 2fr 1fr; /* 这里的 / 后面是列定义 */
}让我来拆解一下这个例子,我个人觉得这样写是把 grid-template 的威力展现得淋漓尽致:
行定义与区域命名: 在
/符号之前的部分,每一对双引号代表一行,里面的字符串是该行中各个单元格对应的区域名称。比如"header header header"意味着这一行有三个单元格,它们都属于header区域。你可以用.来表示一个空的单元格。 行的高度(如100px,auto,50px)紧随其后。 方括号[row1-start]是可选的行线名称,方便后续定位。
列定义:
/符号之后的部分定义了网格的列结构。比如1fr 2fr 1fr定义了三列,宽度比例为 1:2:1。这里可以使用各种长度单位(px, em, rem, %),也可以使用fr单位(fractional unit,表示可用空间的一份),minmax()函数,甚至repeat()函数。
示例:一个经典的页面布局
Header Main Content
.grid-container {
display: grid;
/*
* 定义三行:header行高100px,main行自适应,footer行高50px
* 定义三列:左侧导航1份,中间主内容2份,右侧边栏1份
* 并为每个区域命名
*/
grid-template:
"header header header" 100px
"nav main aside" auto
"footer footer footer" 50px
/ 1fr 2fr 1fr; /* 列的定义 */
gap: 10px; /* 网格间距 */
height: 100vh; /* 方便看效果 */
}
/* 将子元素放置到对应的命名区域 */
header { grid-area: header; background-color: #f0f0f0; padding: 10px; }
nav { grid-area: nav; background-color: #e0e0e0; padding: 10px; }
main { grid-area: main; background-color: #d0d0d0; padding: 10px; }
aside { grid-area: aside; background-color: #c0c0c0; padding: 10px; }
footer { grid-area: footer; background-color: #b0b0b0; padding: 10px; }通过这种方式,整个页面的宏观布局一眼就能看明白,维护起来也方便很多。我个人在做响应式布局时,经常会结合媒体查询来调整 grid-template 的值,简直是神器。
grid-template 中 fr 单位和 minmax() 函数如何提升布局弹性?
在我看来,fr 单位和 minmax() 函数是 grid-template 乃至整个CSS Grid布局中最具革命性的特性之一,它们直接解决了传统布局中弹性与固定尺寸难以兼顾的痛点。
fr (fractional unit) 代表“一份”可用空间。它的强大之处在于,它会自动计算并分配容器内剩余的空间。举个例子,如果你有三列,定义为 1fr 2fr 1fr,这意味着第一列和第三列各占一份可用空间,而第二列则占据两份。如果总共有 4 份,那么第二列就会是总宽度的 50%。这比百分比灵活得多,因为它是在扣除固定尺寸元素(比如 px 单位的侧边栏)后,再来分配剩余空间。我经常用它来做主内容区域的自适应宽度,简直是省心。
而 minmax(min, max) 函数则更进一步,它允许你为网格轨道(行或列)设置一个尺寸范围。这意味着你可以说:“这个列的宽度最小是 200px,最大是 1fr。” 当可用空间不足 200px 时,它会保持 200px(可能出现溢出);当空间充足时,它会按 1fr 的比例进行分配。这种弹性与限制的结合,对于创建真正健壮和响应式的布局至关重要。
想象一下,你有一个侧边栏,你希望它最小宽度是 250px,但如果屏幕足够宽,它也可以扩展到占据总宽度的 0.25fr。这时你就可以写 minmax(250px, 0.25fr)。这种能力让我觉得在处理不同屏幕尺寸时的布局策略变得异常清晰和直接,不再需要复杂的JS计算或者嵌套多层flexbox来模拟。
grid-template 与 grid-template-areas 有何关联?
实际上,grid-template-areas 是 grid-template 这个大属性里的一部分,或者说,grid-template 包含了 grid-template-areas 的功能。当我第一次接触到 grid-template 的时候,我发现它把行、列的定义和区域的命名巧妙地融合在了一起,这种做法简直是天才。
grid-template-areas 单独使用时,你需要先用 grid-template-rows 和 grid-template-columns 定义好网格结构,然后才能用 grid-template-areas 来放置元素。例如:
.container {
display: grid;
grid-template-rows: 100px auto 50px;
grid-template-columns: 1fr 2fr 1fr;
grid-template-areas:
"header header header"
"nav main aside"
"footer footer footer";
}而 grid-template 的美妙之处在于,它把这些都整合到了一起。你可以在定义行和列的同时,直接用字符串字面量来“画”出你的布局区域。这就好像你拿着笔在纸上画草图一样,非常直观。
.container {
display: grid;
grid-template:
"header header header" 100px /* 定义第一行是header区域,高100px */
"nav main aside" auto /* 定义第二行是nav, main, aside区域,高自适应 */
"footer footer footer" 50px /* 定义第三行是footer区域,高50px */
/ 1fr 2fr 1fr; /* 最后定义三列的宽度比例 */
}这种集成方式,在我看来,大大提升了代码的可读性和维护性。当你需要调整布局时,你只需要看 grid-template 这一行或这几行代码,就能清晰地看到整个页面的骨架是如何组织的。特别是当布局比较复杂时,这种视觉化的定义方式能有效避免出错,并且让团队成员之间更容易理解布局意图。它把布局的“意图”和“实现”融合得非常好。
在实际项目中,grid-template 还有哪些高级用法或注意事项?
在实际项目里,grid-template 的应用远不止基础布局那么简单。我发现它的一些“高级”用法或者说一些需要注意的细节,能让你的布局更加灵活和健壮。
一个很常见的场景是响应式设计。虽然前面提到了用媒体查询改变 grid-template 的值,但更进一步,你可以利用它来彻底改变不同屏幕尺寸下的布局结构。比如,在桌面端可能是三列布局,到了移动端,你可能想让它们变成单列堆叠,这时只需要在媒体查询里重写 grid-template 即可:
/* 桌面端 */
.grid-container {
grid-template:以上就是《CSS网格布局中,grid-template是一个简写属性,用于同时设置grid-template-rows、grid-template-columns和grid-template-areas。它的使用方式如下:1.基本语法grid-template:[row-size]/[column-size];或者更完整的格式:grid-template:[grid-template-rows]/[grid-template-columns][grid-template-areas];2.设置行和列的大小示例1:设置固定行高和列宽.grid-container{display:grid;grid-template:100px200px/1fr2fr;}行高为100px和200px列宽为1fr和2fr示例2:使用重复值(repeat()).grid-container{display:grid;grid-template:repeat(3,100px)/repeat(auto-fit,1fr);}行高为100px,共3行列宽自动适应容器宽度,每列1fr3.设置网格区域(grid-template-areas).grid-container{》的详细内容,更多关于的资料请关注golang学习网公众号!
HTML瀑布流布局实现技巧全解析
- 上一篇
- HTML瀑布流布局实现技巧全解析
- 下一篇
- Python定时任务实现方法及APScheduler配置详解
-
- 文章 · 前端 | 6小时前 | 工程化 · 前端 · javascript · css · 弹窗 · 前端 z-index 遮罩层 stacking context Portal 弹窗层级
- 前端弹窗层级治理工作流:从 z-index 混乱到 Portal 容器规范
- 350浏览 收藏
-
- 文章 · 前端 | 6小时前 | 前端 · javascript · URL参数 · 列表筛选 · 页面状态 · 前端 筛选条件 列表页 history.replaceState URLSearchParams 刷新还原
- 前端筛选条件刷新后丢失怎么办:从内存状态到 URL 参数一步步排查
- 348浏览 收藏
-
- 文章 · 前端 | 8小时前 | 前端 · 性能优化 · 路由 · javascript · 前端 用户体验 滚动位置 路由缓存 scrollRestoration
- 前端详情页返回列表丢失滚动位置怎么办:从复现到恢复一步步排查
- 458浏览 收藏
-
- 文章 · 前端 | 2天前 | 前端 · javascript · sourcemap · 错误监控 · 线上排查 · 前端 错误监控 告警 onerror sourcemap unhandledrejection
- 前端错误监控实战:onerror、unhandledrejection 和 sourcemap 定位问题
- 331浏览 收藏
-
- 文章 · 前端 | 2天前 | 前端 · javascript · 缓存治理 · localStorage · Web性能 · 前端 本地缓存 localStorage 过期时间 版本迁移 异常兜底
- 前端 localStorage 缓存治理实战:过期时间、版本号和异常兜底
- 480浏览 收藏
-
- 文章 · 前端 | 2天前 | 前端 · 性能优化 · javascript · 图片优化 · IntersectionObserver · 前端 性能优化 图片懒加载 IntersectionObserver Web性能 首屏优化
- 前端图片懒加载实战:用 IntersectionObserver 降低首屏压力
- 184浏览 收藏
-
- 文章 · 前端 | 3天前 | 前端 · 性能优化 · javascript · fetch · 前端 搜索优化 Fetch AbortController 请求竞态
- 前端搜索竞态治理实战:用 AbortController 取消过期请求
- 178浏览 收藏
-
- 文章 · 前端 | 3天前 |
- 前端长任务治理实战:用 PerformanceObserver 找出页面卡顿源头
- 423浏览 收藏
-
- 文章 · 前端 | 2星期前 |
- CSS数字显示统一技巧,OpenType特性应用方法
- 209浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- MiMo Code
- MiMo Code 是小米大模型团队开源的新一代 AI 编程助手,面向开发者提供代码理解、生成与辅助开发能力,适合作为 AI 编程工具收藏和体验。
- 87次使用
-
- TRAE Work
- TRAE AI IDE | 国内首款 AI 原生集成开发环境,深度集成 Doubao-1.5-pro 与 DeepSeek 模型,支持中文自然语言一键生成完整代码框架,实时预览前端效果并智能修复 BUG。首创 Builder 模式实现需求到代码的自动化开发,兼容 Windows/macOS 系统,官网下载即用。
- 113次使用
-
- MeloLab
- MeloLab 是一款 AI 音乐生成工具,可根据文本创意生成歌曲、人声、混音、分轨和背景音乐,适合创作者快速制作音乐素材。
- 96次使用
-
- ChatExcel酷表
- ChatExcel酷表是由北京大学团队打造的Excel聊天机器人,用自然语言操控表格,简化数据处理,告别繁琐操作,提升工作效率!适用于学生、上班族及政府人员。
- 8748次使用
-
- Any绘本
- 探索Any绘本(anypicturebook.com/zh),一款开源免费的AI绘本创作工具,基于Google Gemini与Flux AI模型,让您轻松创作个性化绘本。适用于家庭、教育、创作等多种场景,零门槛,高自由度,技术透明,本地可控。
- 9160次使用
-
- JavaScript函数定义及示例详解
- 2025-05-11 502浏览
-
- 优化用户界面体验的秘密武器:CSS开发项目经验大揭秘
- 2023-11-03 501浏览
-
- 使用微信小程序实现图片轮播特效
- 2023-11-21 501浏览
-
- 解析sessionStorage的存储能力与限制
- 2024-01-11 501浏览
-
- 探索冒泡活动对于团队合作的推动力
- 2024-01-13 501浏览

