0

0

css grid布局中的grid-column与grid-row_跨越多个单元格的技巧

P粉602998670

P粉602998670

发布时间:2026-01-08 11:20:03

|

372人浏览过

|

来源于php中文网

原创

grid-column: 1 / 4 表示从第1条线到第4条线,跨3列;grid-row: 2 / -1 表示从第2行线到最后一行线;span语法需明确起点,否则受自动定位影响,推荐显式指定起始线或使用命名区域。

css grid布局中的grid-column与grid-row_跨越多个单元格的技巧

grid-column 和 grid-row 怎么写才能跨多格

直接写 grid-column: 1 / 4 表示从第 1 条线开始,到第 4 条线结束,跨越 3 列(不是 4 格)。同理 grid-row: 2 / -1 表示从第 2 行线开始,到最后一行线结束——注意负索引在 grid 中是合法的,且指向隐式网格线。

常见错误是写成 grid-column: 1 / 3 却以为占了 3 格,其实只占 2 格;或者用 span 3 却忘了它默认从当前自动定位的位置起算,不是从第 1 格起。

  • grid-column: span 2:从元素本该落下的列起,向右跨 2 格(等价于 auto / span 2
  • grid-column: 2 / span 3:从第 2 条线开始,向右跨 3 格(终点线 = 2 + 3 = 第 5 条线)
  • grid-row: -2 / -1:跨最后一行与倒数第二行之间的区域,即最底一行(前提是显式定义了足够多的行)
  • 不写起始线时(如 grid-column: / span 2),浏览器按自动定位规则决定起点,结果可能不可控,慎用

grid-column-start / grid-row-end 这类拆分属性还值得用吗

绝大多数场景下不用。现代写法优先用简写 grid-columngrid-row,语义清晰、不易出错。只有两种情况例外:

  • 需要单独动画某条边界线(比如只动 grid-column-end),但 CSS Grid 的线本身不能被单独动画,所以实际极少真用
  • 用 CSS 自定义属性做动态控制时,拆开写更灵活,例如:
    :root { --col-start: 2; --col-span: 3; }
    .item { grid-column: var(--col-start) / span var(--col-span); }

注意:grid-column-start 单独设值不会触发跨格,必须配对设置 grid-column-end 或用 span,否则行为等同于 auto

立即学习前端免费学习笔记(深入)”;

OpenJobs AI
OpenJobs AI

AI驱动的职位搜索推荐平台

下载

用 span 跨格时,为什么有时跨不到预期位置

根本原因是 span 的“起点”由自动定位算法决定,而该算法受 grid-auto-flow、已放置项、显式轨道定义共同影响。比如:

  • grid-auto-flow: row(默认)下,新项会填入首行最左空位,span 3 从此处起算
  • 若前一行已有满格项,新项可能被挤到第二行,此时 span 3 就从第二行起跨,而非你脑中预设的“第一行第三格”
  • 显式定义列数少于 span 数(如 grid-template-columns: 1fr 1fr,共 2 列),却写 span 3,浏览器会自动扩展隐式网格,但布局可能溢出容器

解决办法始终是:显式控制起点。宁可写 grid-column: 2 / span 2,也不要依赖自动定位加 span 2

grid-area 能替代 grid-column + grid-row 吗

能,而且更紧凑,尤其适合命名区域或固定位置的模块。例如:

.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
main { grid-area: main; }

.container {
  display: grid;
  grid-template-areas:
    "header header header"
    "sidebar main main"
    "footer footer footer";
}

但要注意:grid-area 是简写,覆盖 grid-row-startgrid-column-startgrid-row-endgrid-column-end 四个属性。如果只想要跨列不跨行,用 grid-area: auto / 2 / auto / span 3 反而比 grid-column: 2 / span 3 更啰嗦。

真正省事的是命名区域方式;纯数值定位时,grid-columngrid-row 更直白,也更容易动态计算(比如 JS 注入 style.gridRow = '2 / span ${n}')。

跨格看着简单,实际卡点都在“起点不可见”——浏览器自动算的起始线看不见、摸不着,一不留神就和你脑内坐标系对不上。动手前先用 outline: 1px solid red 套住所有 grid item,再打开开发者工具的网格叠加层,亲眼确认每条线在哪。

相关专题

更多
css
css

css是层叠样式表,用来表现HTML或XML等文件样式的计算机语言,不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

509

2023.06.15

css居中
css居中

css居中:1、通过“margin: 0 auto; text-align: center”实现水平居中;2、通过“display:flex”实现水平居中;3、通过“display:table-cell”和“margin-left”实现居中。本专题为大家提供css居中的相关的文章、下载、课程内容,供大家免费下载体验。

262

2023.07.27

css如何插入图片
css如何插入图片

cssCSS是层叠样式表(Cascading Style Sheets)的缩写。它是一种用于描述网页或应用程序外观和样式的标记语言。CSS可以控制网页的字体、颜色、布局、大小、背景、边框等方面,使得网页的外观更加美观和易于阅读。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

745

2023.07.28

css超出显示...
css超出显示...

在CSS中,当文本内容超出容器的宽度或高度时,可以使用省略号来表示被隐藏的文本内容。本专题为大家提供css超出显示...的相关文章,相关教程,供大家免费体验。

536

2023.08.01

css字体颜色
css字体颜色

CSS中,字体颜色可以通过属性color来设置,用于控制文本的前景色,字体颜色在网页设计中起到很重要的作用,具有以下表现作用:1、提升可读性;2、强调重点信息;3、营造氛围和美感;4、用于呈现品牌标识或与品牌形象相符的风格。

756

2023.08.10

什么是css
什么是css

CSS是层叠样式表(Cascading Style Sheets)的缩写,是一种用于描述网页(或其他基于 XML 的文档)样式与布局的标记语言,CSS的作用和意义如下:1、分离样式和内容;2、页面加载速度优化;3、实现响应式设计;4、确保整个网站的风格和样式保持统一。

601

2023.08.10

css三角形怎么写
css三角形怎么写

CSS可以通过多种方式实现三角形形状,本专题为大家提供css三角形怎么写的相关教程,大家可以免费体验。

559

2023.08.21

css设置文字颜色
css设置文字颜色

CSS(层叠样式表)可以用于设置文字颜色,这样做有以下好处和优势:1、增加网页的可视化效果;2、突出显示某些重要的信息或关键字;3、增强品牌识别度;4、提高网页的可访问性;5、引起不同的情感共鸣。

388

2023.08.22

Golang 分布式缓存与高可用架构
Golang 分布式缓存与高可用架构

本专题系统讲解 Golang 在分布式缓存与高可用系统中的应用,涵盖缓存设计原理、Redis/Etcd集成、数据一致性与过期策略、分布式锁、缓存穿透/雪崩/击穿解决方案,以及高可用架构设计。通过实战案例,帮助开发者掌握 如何使用 Go 构建稳定、高性能的分布式缓存系统,提升大型系统的响应速度与可靠性。

22

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.7万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.8万人学习

CSS教程
CSS教程

共754课时 | 18.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号