直接用 grid-template-columns: repeat(12, 1fr) 是错的——因 1fr 会强制拉伸导致撑破,应改用 minmax(0, 1fr) 配合响应式断点重置列数与 gap,子项用 grid-column: span n 控制跨度,嵌套时需独立声明 grid 并避免间距叠加。

直接用 grid-template-columns: repeat(12, 1fr) 是错的——小屏下内容撑破、断点失效、嵌套错位,根本跑不起来。
为什么 repeat(12, 1fr) 不能直接用
因为 1fr 是“剩余空间均分”,不是“固定占比”。当容器窄、内容宽(比如长单词或图片)时,Grid 会强行拉伸列宽导致横向滚动;它也不自动处理 gap 占位、响应式切换或偏移逻辑。Bootstrap 的 col-4 要的是稳定 ≈33.33% 宽度,不是“尽量分但可能崩掉”。
-
minmax(0, 1fr)才是关键:允许列收缩到 0,避免撑破,同时保留等分语义 - 列轨道定义和子项跨度必须解耦——容器定轨道,子项用
grid-column: span N控制占几格 - IE11 不支持
minmax(),若需兼容,得用@supports降级为float或flex
怎么写容器的 grid-template-columns
别写死 1fr,也别用百分比硬算(如 8.333%),用 minmax() + repeat() 组合才是健壮写法:
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
/* 移动端默认单列 */
.container {
display: grid;
grid-template-columns: 1fr;
gap: 16px;
}
<p>/<em> 平板:6列 </em>/
@media (min-width: 768px) {
.container {
grid-template-columns: repeat(6, minmax(0, 1fr));
}
}</p><p>/<em> 桌面:12列 </em>/
@media (min-width: 1024px) {
.container {
grid-template-columns: repeat(12, minmax(0, 1fr));
}
}</p>
- 断点值要和业务一致(比如 Bootstrap 是
576px/768px,这里按常见设备取768px/1024px) - 每档断点都重置
grid-template-columns,不能只改子项grid-column——否则列轨道没变,span会跨错线 -
gap值也要随断点变(移动端16px,桌面32px),别用margin模拟留白
子项怎么对应 col-3、col-md-6 这种类名
不用生成一堆 .col-1 到 .col-12 类——直接用属性选择器或 BEM 命名绑定 grid-column:
.grid__col--3 { grid-column: span 3; }
.grid__col--6 { grid-column: span 6; }
<p>@media (min-width: 768px) {
.grid<strong>col--md-6 { grid-column: span 6; }
.grid</strong>col--md-4 { grid-column: span 4; }
}</p>
-
grid-column: span 4是相对定位:从当前自动分配的起始线往后跨 4 条线 -
grid-column: 2 / 6是绝对定位:强制从第 2 线开始、到第 6 线结束——适合固定区域(如页眉横跨全宽),不适合动态栅格 - 偏移(offset)用
grid-column-start: 3实现,等价于 Bootstrap 的offset-2(跳过前 2 列)
嵌套容器和留白处理的坑
嵌套 Grid 容器最容易出错:父容器设了 gap,子容器又设 padding,再加 margin,结果间距翻倍、对齐错乱。
- 统一用
gap控制列/行间距,子项不要加margin - 内边距用
padding加在子项内部,不是加在容器上 - 嵌套时,子容器也要重新声明
display: grid和自己的grid-template-columns,不能依赖父级继承 - 空网格项(比如占位用的
<div></div>)会占位,而span天然跳过空项——所以别为了“视觉对齐”硬塞空 div
真正麻烦的不是写几行 CSS,而是所有断点的列数、gap、max-width、minmax() 参数必须同步变化——漏掉一个,布局就在某台设备上裂开。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










