信息发布→ 登录 注册 退出

Grid网格布局如何实现三行布局_使用grid-template-rows精确划分行高

发布时间:2025-12-15

点击量:
grid-template-rows实现三行布局需明确高度单位:px用于固定高度(如60px 400px 80px),fr分配剩余空间(如60px 1fr 80px),minmax()兼顾弹性与最小高度(如minmax(200px,1fr)),auto适配内容,再结合媒体查询实现响应式。

grid-template-rows 实现三行布局,核心是明确指定三行的高度比例或具体值,让容器子元素自动按顺序填入对应行轨道。

基础三行结构:固定像素高度

适合头部、主体、底部高度确定的场景,比如顶部导航栏 60px、内容区 400px、底部 80px:

示例代码:

container {
  display: grid;
  grid-template-rows: 60px 400px 80px;
}

此时三个直接子元素会依次占据这三行,无需额外设置 grid-row

弹性三行布局:使用 fr 单位分配剩余空间

更常用,尤其适配不同屏幕。例如“头部固定、主体自适应、底部固定”:

grid-template-rows: 60px 1fr 80px;

其中 1fr 表示占用所有剩余可用高度,不受内容撑开影响,也不会溢出。

如果希望主体占两份、其他各一份,可写:60px 2fr 80px

混合单位:兼顾内容与弹性

当某一行内容高度不确定(如文章标题+简介),又想避免留白或溢出,可用 minmax()

grid-template-rows: 60px minmax(200px, 1fr) 80px;

含义:中间行至少高 200px,有空间时可伸展至占满剩余高度。

也可用 auto 让某行“刚好包裹内容”,但需注意:若内容过多可能撑大整页,建议配合 overflow: auto 或限制最大高度。

响应式三行:结合媒体查询动态调整

小屏下可把三行改为单列堆叠,或合并部分区域:

  • 默认(桌面):grid-template-rows: 70px 1fr 90px;
  • @media (max-width: 768px) {
      grid-template-rows: auto 1fr auto;
    }

这样在移动端让头尾根据内容自适应,中间仍保持弹性占位。

基本上就这些。关键是理解 grid-template-rows 定义的是“行轨道”而非元素本身,只要子元素顺序正确,Grid 会自动按序分配。不复杂但容易忽略单位语义——px 是刚性,fr 是弹性,auto 是内容驱动,混用才能灵活控高。

标签:# ai  # overflow  # auto  #   # display  # 自适应  # 的是  # 不受  # 不确定  # 而非  # 填入  # 两份  # 这三  # 可把  # 行至  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!