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

在CSS网格布局体系中,grid-template-rows和grid-template-columns是定义网格容器行列结构的核心属性,前者用于设置网格的行高,后者用于设置网格的列宽,二者共同决定了网格的整体框架。

如何在CSS中定义Grid行列_grid-template-rows grid-template-columns应用

grid-template-rows和grid-template-columns基础语法

这两个属性都属于网格容器的属性,需要作用在设置了display: griddisplay: inline-grid的元素上,语法格式如下:

/* 定义行高 */
grid-template-rows: 行高取值1 行高取值2 ...;
/* 定义列宽 */
grid-template-columns: 列宽取值1 列宽取值2 ...;

取值的数量对应网格的行数或列数,每个取值之间用空格分隔,支持多种不同的取值类型。

常见取值类型及应用场景

1. 固定像素取值

直接使用像素值定义行高或列宽,适合需要固定尺寸的场景,比如固定高度的导航栏、固定宽度的侧边栏。

.container {
    display: grid;
    /* 定义3行,高度分别为100px、200px、150px */
    grid-template-rows: 100px 200px 150px;
    /* 定义2列,宽度分别为300px、500px */
    grid-template-columns: 300px 500px;
}

2. 百分比取值

百分比取值是相对于网格容器的尺寸计算,适合需要响应式适配的场景,比如列宽占容器宽度的百分比。

.container {
    display: grid;
    /* 3行高度分别占容器高度的20%、60%、20% */
    grid-template-rows: 20% 60% 20%;
    /* 2列宽度分别占容器宽度的30%、70% */
    grid-template-columns: 30% 70%;
}

3. fr单位取值

fr是Grid布局特有的分数单位,用于表示剩余空间的分配比例,适合需要灵活分配剩余空间的场景。

.container {
    display: grid;
    /* 3行按1:2:1的比例分配容器高度 */
    grid-template-rows: 1fr 2fr 1fr;
    /* 3列按1:3:1的比例分配容器宽度 */
    grid-template-columns: 1fr 3fr 1fr;
}

4. repeat函数简化写法

当行列的取值存在重复规律时,可以使用repeat函数简化代码,第一个参数是重复次数,第二个参数是重复的取值。

.container {
    display: grid;
    /* 等价于 grid-template-rows: 100px 100px 100px */
    grid-template-rows: repeat(3, 100px);
    /* 等价于 grid-template-columns: 1fr 1fr 1fr 1fr */
    grid-template-columns: repeat(4, 1fr);
}

5. auto自动取值

auto表示由浏览器自动计算尺寸,会根据内容或者剩余空间自动调整行高或列宽。

.container {
    display: grid;
    /* 第一行高度固定100px,第二行高度自适应内容 */
    grid-template-rows: 100px auto;
    /* 第一列固定200px,第二列自适应剩余宽度 */
    grid-template-columns: 200px auto;
}

综合应用示例

下面实现一个常见的页面布局:顶部导航栏、中间左侧侧边栏加右侧内容区、底部页脚,完整代码如下:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Grid布局示例</title>
    <style>
        .page {
            display: grid;
            /* 行高:导航100px,内容区自适应,页脚80px */
            grid-template-rows: 100px 1fr 80px;
            /* 列宽:侧边栏200px,内容区自适应 */
            grid-template-columns: 200px 1fr;
            height: 100vh;
            margin: 0;
        }
        .header {
            background: #4a90e2;
            grid-column: 1 / 3; /* 导航占满两列 */
        }
        .sidebar {
            background: #f5f5f5;
        }
        .content {
            background: #ffffff;
            padding: 20px;
        }
        .footer {
            background: #333333;
            color: #fff;
            grid-column: 1 / 3; /* 页脚占满两列 */
        }
    </style>
</head>
<body>
    <div class="page">
        <div class="header">顶部导航</div>
        <div class="sidebar">侧边栏</div>
        <div class="content">内容区域</div>
        <div class="footer">底部页脚</div>
    </div>
</body>
</html>

这个示例中通过grid-template-rows定义了三行的高度,通过grid-template-columns定义了两列的宽度,再结合grid-column属性让导航和页脚跨列显示,快速实现了常见的页面结构。

注意事项

  • 如果定义的行列数量超过子元素数量,多余的网格会保持定义的尺寸,只是没有内容填充
  • fr单位只会分配除去固定尺寸后的剩余空间,不会压缩固定尺寸的网格
  • repeat函数可以和不同取值混合使用,比如grid-template-columns: 200px repeat(2, 1fr) 150px

CSS_Gridgrid-template-rowsgrid-template-columns网格布局修改时间:2026-07-04 09:33:26

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