用 gap 属性可统一控制 Grid 容器内卡片间距,避免 margin 冲突与不一致;需确保父容器为 display: grid、清除子项冗余 margin/padding,并正确使用 gap 简写或行列分写语法。

直接给容器设置 gap 属性,就能统一控制所有卡片之间的间距,彻底避免因 margin、padding 混用或子项自身样式导致的不一致。
用 gap 替代 margin 布局卡片
Grid 布局中,卡片(子项)之间不该靠各自设置 margin 来留空——这容易造成方向冲突(比如相邻两项都设 right/bottom margin)、首行首列多出空白,或响应式下错乱。gap 是 Grid 专属的“轨道间隙”,只作用于网格线之间,不影响容器内外边距。
- 横向间距用 column-gap,纵向用 row-gap
- 更推荐简写为 gap: 16px(等效 row-gap 和 column-gap 同值)
- 若需行列不同,写成 gap: 12px 20px(先纵后横)
检查是否有干扰的子项内边距或外边距
即使用了 gap,如果卡片自身有 padding 或 margin,仍可能让视觉间距“看起来”不均。尤其注意:
- 移除卡片的 margin(除非刻意需要额外偏移)
- 统一卡片 padding,避免内容撑开导致高度不一
- 确认没有对 :first-child / :last-child 等做特殊 margin 重置
确保父容器是标准 grid 容器
gap 只在 display: grid 或 display: inline-grid 下生效。常见踩坑点:
- 误写成 display: flex —— flex 用的是 gap(现代浏览器支持),但逻辑不同,且旧版不兼容
- 嵌套了多余 wrapper 元素,实际 grid 容器不是最外层卡片父级
- 用了 grid-template-areas 却没配合 grid-area,导致部分项未进入网格流
基本上就这些。gap 是 Grid 布局里最干净、最可控的间距方案,用对了,卡片排列立刻整齐划一。










