grid-template 是 CSS Grid 布局的核心速记属性,通过一个声明定义行、列和命名区域,提升代码可读性与编写效率。其语法以引号内字符串定义网格区域,每行对应一个字符串,后接行高;斜杠后定义列宽,如 1fr 2fr 1fr。例如 .container { grid-template: "header header" 80px / 150px 1fr; } 直观构建布局骨架。相比单独设置 grid-template-rows、columns 和 areas,它更清晰高效,尤其适用于复杂或响应式设计。通过媒体查询可重定义 grid-template 实现不同断点下的布局切换,如桌面三列转移动端单列。使用时需注意:必须在 display: grid 容器上生效;避免与更复杂的 grid 属性混淆;命名区域应语义化以增强可维护性。性能方面,Grid 本身优化良好,主要开销在于网格项数量而非 grid-template 属性。此外,grid-template 支持内容与视觉分离,可在不改变 HTML 顺序的前提下调整布局,有利于可访问性,前提是保持语义化结构。结合 minmax() 等函数还能实现自适应列数,广泛用于产品列表等响应式场景。

grid-template
使用
grid-template
grid-template-rows
grid-template-columns
grid-template-areas
通常,它的语法结构是这样的:
.container {
grid-template:
"<area-name-1> <area-name-2> ..." /* 定义第一行区域 */
"<area-name-3> <area-name-4> ..." /* 定义第二行区域 */
/ /* 分隔符,区分行和列的定义 */
[column-start-line-name] <column-size-1> [column-end-line-name]
<column-size-2> ...;
}或者更常见的简化形式:
立即学习“前端免费学习笔记(深入)”;
.container {
grid-template:
"header header header" 100px /* 定义第一行,区域名为 header,高度 100px */
"nav main aside" auto /* 定义第二行,区域名为 nav, main, aside,高度自适应 */
"footer footer footer" 50px /* 定义第三行,区域名为 footer,高度 50px */
/ 1fr 2fr 1fr; /* 定义三列,比例为 1:2:1 */
}这里,引号内的字符串定义了网格的区域名称,每个字符串代表一行。字符串后面的数值(如
100px
auto
50px
/
1fr 2fr 1fr
举个例子,如果我想创建一个经典的页眉、侧边栏、主内容和页脚布局:
.grid-container {
display: grid;
grid-template:
"header header header" 80px
"nav main aside" auto
"footer footer footer" 60px
/ 150px 1fr 200px; /* 左侧导航 150px, 主内容自适应, 右侧侧边栏 200px */
gap: 10px; /* 网格项之间的间距 */
height: 100vh; /* 方便观察布局效果 */
}
.header { grid-area: header; background-color: lightblue; }
.nav { grid-area: nav; background-color: lightcoral; }
.main { grid-area: main; background-color: lightgreen; }
.aside { grid-area: aside; background-color: lightgoldenrodyellow; }
.footer { grid-area: footer; background-color: lightgray; }这个例子清晰地展示了
grid-template
grid-area
grid-template-rows
grid-template-columns
grid-template-areas
grid-template
当我们的页面布局变得复杂,比如需要嵌套网格或者在不同断点下调整布局时,
grid-template
例如,一个仪表盘布局,可能在桌面端有三列,但在移动端变成单列。
桌面端布局:
.dashboard-grid {
display: grid;
grid-template:
"header header header" 60px
"nav content widgets" 1fr
"footer footer footer" 40px
/ 200px 1fr 250px;
}这里,
header
footer
nav
content
widgets
在移动端,通过媒体查询,我们可以完全改变
grid-template
@media (max-width: 768px) {
.dashboard-grid {
grid-template:
"header" auto
"nav" auto
"content" 1fr
"widgets" auto
"footer" auto
/ 1fr; /* 变成单列 */
}
}你看,只需要调整
grid-template
grid-column
grid-row
grid-template
grid-template
在使用
grid-template
一个常见的误区是混淆了
grid-template
grid
grid
grid-template
grid-auto-rows
grid-auto-columns
grid-auto-flow
grid-template
grid
另一个容易忽略的点是,
grid-template
display: grid;
display: inline-grid;
display
关于性能,CSS Grid 本身在现代浏览器中性能表现非常好,大部分布局计算都是在主线程之外完成的。
grid-template
grid-template
我个人在使用
grid-template
header
main
sidebar
a
b
c
grid-template
grid-template
grid-template
举个例子,一个产品列表,在宽屏下可能是三列,小屏下可能是两列,手机端可能就是单列。
.product-grid {
display: grid;
grid-template-columns: repeat(3, 1fr); /* 默认三列 */
gap: 20px;
}
@media (max-width: 992px) {
.product-grid {
grid-template-columns: repeat(2, 1fr); /* 中等屏幕两列 */
}
}
@media (max-width: 576px) {
.product-grid {
grid-template-columns: 1fr; /* 小屏幕单列 */
}
}虽然这里没有直接使用
grid-template
grid-template-columns
grid-template
minmax()
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
至于可访问性,
grid-template
当然,这要求开发者在使用 Grid 布局时,仍然要保持对 HTML 语义化的关注。不要因为 Grid 布局的强大而随意改变 HTML 结构,导致内容顺序混乱。毕竟,CSS Grid 只是一个布局工具,它无法替代良好的 HTML 结构和语义。
以上就是如何使用cssgrid-template属性创建网格布局的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号