CSS subgrid 子网格生成器

可视化生成 CSS subgrid 子网格(Chrome 117+、Firefox 71+、Safari 16+ 原生支持): 完整支持 grid-template-columns: subgridgrid-template-rows: subgrid 双向轨道继承none / columns / rows / both 四种方向切换、子网格跨列跨行定位(grid-column / grid-row span)、父网格列行轨道定义(fr / px / % / auto)、gap 自动继承。内置父子双层可视化预览—— 蓝色虚线父网格轨道 + 橙色实线子网格,直观展示子网格如何继承并对齐父网格轨道。 8 组预设覆盖双向继承、仅列/仅行继承、无继承对比、卡片墙列对齐、表单标签对齐、杂志嵌套布局等场景。 适用于卡片墙列对齐、表单标签输入对齐、杂志式嵌套排版等需要嵌套网格轨道对齐的场景。所有处理在浏览器本地完成。

预设:
父网格容器
列轨道 grid-template-columns
行轨道 grid-template-rows(可选)
子网格容器(subgrid 核心)
subgrid 方向

可视化预览

蓝色虚线 = 父网格轨道 | 橙色实线 = 子网格 | 子网格内项自动对齐父网格轨道
子项 1
子项 2
子项 3
子项 4
子项 5
子项 6

原理说明

子网格启用 both 方向 subgrid: - 列轨道继承:子网格的 grid-template-columns 设为 subgrid,直接复用父网格的 3 条列轨道定义(1fr 1fr 1fr),子网格内的项自动对齐父网格列线。 - 跨列:子网格跨父网格 3 列,继承的轨道数 = 父网格列数 × 跨列数占比。 - 行轨道继承:子网格的 grid-template-rows 设为 subgrid,复用父网格的 1 条行轨道定义(140px),子网格内的项自动对齐父网格行线。 - 跨行:子网格跨父网格 1 行。 - gap 继承:subgrid 方向下,子网格的 gap 自动继承父网格的 gap,无需重复声明。 - 核心价值:subgrid 解决了"嵌套网格无法对齐父网格轨道"的痛点。传统方案要么用百分比硬凑对齐(脆弱),要么放弃嵌套用扁平结构(语义丢失)。subgrid 让嵌套结构保持语义的同时实现轨道级对齐。

生成的 CSS 代码

.parent {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-rows: 140px;
  gap: 16px 16px;
}

.child {
  display: grid;
  grid-column: span 3;
  grid-template-columns: subgrid;
  grid-template-rows: subgrid;
  /* subgrid 方向下 gap 自动继承父网格 */
}

常见问题

什么是 CSS subgrid?它解决了什么问题?

CSS subgrid 是 CSS Grid Layout Module Level 2 引入的子网格特性, 允许嵌套的 grid 容器继承父网格的轨道定义——通过将子网格的 grid-template-columnsgrid-template-rows 设为 subgrid,子网格直接复用父网格对应方向的轨道,实现嵌套元素的轨道级对齐。
它解决的核心痛点是:嵌套网格无法对齐父网格轨道。传统嵌套 grid 的子网格独立定义轨道,父子网格的列线/行线无法对齐,导致嵌套元素错位。开发者只能用百分比硬凑对齐 (脆弱,父网格轨道变化即失效)或放弃嵌套用扁平结构(语义丢失)。subgrid 让嵌套结构保持语义的同时 实现轨道级精确对齐。
典型场景:卡片墙中每张卡片内部的列与父网格列对齐、表单中标签与输入框跨字段对齐、 杂志式排版中文章内容列与版面列对齐。

subgrid 与普通嵌套 grid 有什么区别?

普通嵌套 grid:子网格独立定义自己的 grid-template-columns, 与父网格轨道无关联。例如父网格 1fr 2fr 1fr,子网格 1fr 1fr, 子网格的列线与父网格列线完全错位。
subgrid 嵌套:子网格的 grid-template-columns: subgrid, 直接继承父网格的列轨道定义。子网格的列线与父网格列线完全对齐,父网格轨道变化时子网格自动跟随。
关键差异:普通嵌套是"两层独立网格",subgrid 是"一层网格的延伸"。 subgrid 下子网格的 gap 也继承父网格,无需重复声明。本工具的"无继承(对比基线)"预设可直观对比 两者差异——切换到 columns/rows/both 即可观察 subgrid 的对齐效果。

grid-template-columns: subgrid 和 grid-template-rows: subgrid 怎么用?

两者分别让子网格继承父网格的列轨道行轨道,可单独使用或组合使用。
仅列继承grid-template-columns: subgrid;,子网格列对齐父网格列, 行轨道独立定义。适合卡片墙、表单标签对齐等只需列对齐的场景。
仅行继承grid-template-rows: subgrid;,子网格行对齐父网格行, 列轨道独立定义。适合需要行对齐的场景。
双向继承:同时声明两者,子网格列与行都对齐父网格。适合需要完整对齐的场景。
继承的轨道数:子网格继承的轨道数取决于它在父网格中跨越的轨道数。例如子网格 grid-column: span 3 且父网格有 3 列,则子网格继承 3 条列轨道。本工具的方向切换按钮 可实时切换四种方向(none/columns/rows/both)观察效果。

subgrid 方向(columns / rows / both)如何选择?

选型原则:看需要对齐哪个方向的轨道
- columns:只需列对齐。典型场景:卡片墙(卡片内列对齐父网格列)、 表单(标签列与输入框列对齐)、杂志排版(文章列对齐版面列)。
- rows:只需行对齐。典型场景:需要子网格行与父网格行对齐的布局, 如时间轴、日程表。
- both:需要双向对齐。典型场景:仪表盘卡片(行列都需要对齐)、 复杂嵌套表格布局。
- none:不需要对齐,作为对比基线。
实践建议:优先用 columns(覆盖 80% 场景),只有确实需要行对齐时才升级为 both。subgrid 方向越多,约束越强,灵活性越低。本工具默认采用 both 方向展示 完整对齐效果,可按需切换。

subgrid 方向下 gap 如何继承?需要重复声明吗?

不需要重复声明。subgrid 方向下,子网格的 gaprow-gapcolumn-gap)自动继承父网格的 gap 值。这是 subgrid 的核心便利之一—— 父子网格间距保持一致,无需手动同步。
例如父网格 gap: 16px,子网格 grid-template-columns: subgrid, 子网格的列间距自动为 16px,与父网格列间距一致。
注意:只有 subgrid 方向的 gap 会继承。若子网格只 columns: subgridrows 独立定义,则 row-gap 可独立设置,column-gap 继承父网格。 本工具在 subgrid 方向下自动注释"gap 继承父网格",在 none 方向下允许独立配置 gap。

子网格如何跨列跨行?grid-column / grid-row span 怎么配合 subgrid?

子网格通过 grid-column: span Ngrid-row: span N 在父网格中定位, 决定它继承多少条父网格轨道
例如父网格 4 列,子网格 grid-column: span 2grid-template-columns: subgrid,则子网格继承 2 条父网格列轨道。
关键规则:子网格继承的轨道数 = 跨越的父网格轨道数。若子网格跨 3 列且 columns: subgrid,则子网格有 3 条列轨道,与父网格对应 3 列完全对齐。
实践建议:跨列数应与子网格内项的预期列数匹配。例如子网格跨 3 列且希望 6 个项 排成 2 行 3 列,则 colSpan: 3 + columns: subgrid 即可。本工具的跨列跨行 输入框可实时调整继承的轨道数。

subgrid 的浏览器兼容性如何?如何渐进降级?

subgrid 已全主流浏览器支持:Chrome 117+(2023 年 9 月)、Firefox 71+(2019 年)、 Safari 16+(2022 年)。截至 2024 年底全球浏览器支持率已超 95%,可放心用于生产环境。
渐进降级策略:不支持的浏览器会忽略 subgrid 值,子网格退化为 独立网格(无轨道继承)。推荐写法:
grid-template-columns: 1fr 1fr 1fr; /* 降级 */
grid-template-columns: subgrid; /* 增强 */
先写降级值,再用 subgrid 覆盖。支持的浏览器用 subgrid 对齐,不支持的用独立网格, 两者都能正常渲染,只是对齐精度不同。这是天然的渐进增强——零额外开销,新旧浏览器体验都不差。

使用本工具会保存我的数据吗?隐私如何保障?

零数据上传,全本地处理。本工具的所有配置(父网格轨道、子网格方向、跨列跨行、 gap 等)仅在浏览器内存中处理,不发起任何网络请求,不写入本地存储,不收集任何用户数据。 关闭页面后所有配置自动清除。
复制代码功能使用浏览器原生 Clipboard API,内容直接写入系统剪贴板, 不经过任何中间服务。
本站定位为"零广告 · 全本地处理"的中文开发者工具集,隐私保障是核心承诺。