CSS Subgrid — CSS Grid 的第二级

2025-06-10

CSS Subgrid — CSS Grid 的第二级

标题图片

网格布局即将迎来一些令人惊喜的变化。CSS 网格的二级规范,即CSS Subgrid,即将登陆浏览器,它将把原本就很棒的 CSS 网格提升到一个全新的高度。

有什么好大惊小怪的?

最近,我偶然看到了Rachel Andrew的文章,她在其中介绍了 CSS Subgrid,我对 CSS Subgrid 带来的可能性感到非常兴奋和激动。

简而言之,CSS Subgrid 使得在 CSS Grid 中构建嵌套网格成为可能。

目前(没有子网格),嵌套网格的轨道与父网格上的轨道没有任何关系。简单来说——我们有一个具有display: grid属性的父容器,因此它的子项成为网格项。这些网格项也可以成为网格容器。但是,父网格容器定义的网格轨道不会与子网格容器的网格轨道对齐,因为它们都独立于父网格容器内容的布局。在某些情况下,多个网格项的内容和布局需要相互对齐。

使用 CSS Subgrid,网格容器可以通过将网格项设为子网格,从其父网格容器继承行和列的定义。子网格能够将网格的属性传递给其嵌套元素,并将基于内容的尺寸信息传递回父网格。

CSS Subgrid 的两个主要优势是:

  • 子网格可以使用父网格上定义的网格轨道 - 用于行、列或两者。
  • 子网格也会继承父网格的间距。子网格中项目的大小可以改变父网格轨道的大小。

以下是嵌套网格如何在没有子网格的情况下工作的示例 -

但是,如果我们希望嵌套网格项的轨道与父网格的轨道对齐,该怎么办?

这时,subgrid 就派上用场了。当我们将该属性添加grid-template-rows: subgrid到嵌套的网格项时,它们会继承父网格的 row 属性,并自动相互对齐。

如果应用了该属性,它应该是这样的。

CSS 子网格

注意:目前,没有浏览器支持子网格,因此我创建了一个插图来解释该行为。

列和行的子网格

在这种情况下,子网格将同时位于列和行上。这意味着两个维度都与父网格的轨道对齐。
子网格-列-行

仅适用于列的子网格

在这种情况下,子网格用于列,这意味着网格项中将有一个单独的行隐式轨道,但其列轨道与父网格对齐。
子网格列

仅限行的子网格

在这种情况下,子网格应用于行,与父网格的行轨道对齐,但其列大小与父网格无关。
子网格行

资源

CSS 网格级别 2:子
网格全面到来
CSS 网格布局模块级别 2
为什么我们需要 CSS 子网格


我热切地等待浏览器支持子网格(希望很快),这样我就可以试用它并找出有趣的用例。

有反馈吗?请留言 :)

鏂囩珷鏉ユ簮锛�https://dev.to/ruphaa/css-subgrid-level-2-of-css-grid-1na0
PREV
5 种有效的用户体验来吸引用户的注意力 滚动效果 告别长文本 悬停效果 有效利用空白 平滑加载 总结 感谢阅读
NEXT
为什么公司要求员工有热情?