全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-16 6 分钟 ✍️ juanwangdev

Grid布局之grid-column/grid-row

grid-columngrid-row 用于指定子元素的起始和结束网格线,实现跨行跨列布局。

基本概念

Grid 布局通过网格线(grid line)划分区域,网格线从 1 开始编号。

CSS
网格线:  1    2    3    4
       |----|----|----|
       |  1 |  2 |  3 |
       |----|----|----|

grid-column

控制元素跨越的列。

语法

CSS
.item {
  grid-column: start / end;
}
CSS
/* 占据第 1 到第 3 列(跨 2 列) */
.item {
  grid-column: 1 / 3;
}

/* 简写:span n 表示跨越 n 列 */
.item {
  grid-column: span 2;
}

/* 从第 2 列开始,跨 2 列 */
.item {
  grid-column: 2 / span 2;
}

grid-row

控制元素跨越的行。

CSS
/* 占据第 1 到第 4 行(跨 3 行) */
.item {
  grid-row: 1 / 4;
}

/* 使用 span */
.item {
  grid-row: span 2;
}

常见布局示例

页面头部跨全宽

CSS
.container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: auto;
}

.header {
  grid-column: 1 / -1;  /* -1 表示最后一根网格线 */
}

复杂仪表盘布局

HTML
.dashboard {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-template-rows: repeat(3, 100px);
  gap: 10px;
}

.widget-large {
  grid-column: span 2;
  grid-row: span 2;
}

.widget-wide {
  grid-column: span 3;
}

.widget-tall {
  grid-row: span 2;
}
CSS
<div class="dashboard">
  <div class="widget-large">大组件</div>
  <div class="widget-tall">高组件</div>
  <div class="widget">普通</div>
  <div class="widget-wide">宽组件</div>
</div>

表单标签与输入框

CSS
.form {
  display: grid;
  grid-template-columns: 120px 1fr 1fr;
  gap: 16px;
}

.label {
  grid-row: span 1;  /* 默认 */
}

.input-full {
  grid-column: 2 / 4;  /* 输入框占两列 */
}

特殊值

说明
1 / -1从第一列到最后一列(跨全宽)
span 2跨越 2 列/行
auto自动分配(默认)
CSS
/* 跨全宽 */
.full-width {
  grid-column: 1 / -1;
}

/* 跨全高 */
.full-height {
  grid-row: 1 / -1;
}

实际案例

新闻布局

CSS
.news-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-auto-rows: 150px;
  gap: 15px;
}

.news-featured {
  grid-column: span 2;
  grid-row: span 2;
}

.news-wide {
  grid-column: span 2;
}

日历布局

text
.calendar {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
}

.event-days {
  grid-column: 3 / 6;  /* 周三到周五的活动 */
}

要点总结

  • 网格线从 1 开始,-1 表示最后一根线
  • grid-column: 1 / 3 表示从第 1 线到第 3 线(跨 2 列)
  • span n 表示跨越 n 列/行
  • grid-column: 1 / -1 实现跨全宽

📝 发现内容有误?点击此处直接编辑

← 上一篇 Grid布局之fr单位参数深入理解
下一篇 → Grid布局之minmax()/repeat()
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库