CSS Grid 子网格 subgrid 在 Chrome 58 会中的 bug 及解决方法

阅读时长 2 分钟读完

网格布局是 CSS 中的一种强大的布局工具,Grid 子网格 subgrid 是网格布局的一个重要特性,在 Chrome 58 中,我们发现了一个关于子网格 subgrid 的 bug,可能会影响到前端开发者的使用体验。本文将介绍这个 bug 的详细情况,并给出解决方法。

什么是 CSS Grid 子网格 subgrid?

CSS Grid 子网格 subgrid 是网格布局的一个关键特性,可以让开发者非常方便的创建复杂的布局,而不需要重复子网格的定义。子网格 subgrid 是一种子网格的略微不同的形式,它可以继承父级网格容器的大小和位置。父级网格容器中的网格线与子级网格容器中的网格线对齐,这样就可以创建非常灵活和嵌套的布局。

Chrome 58 的 bug

在 Chrome 58 中,我们发现了一个关于子网格 subgrid 的 bug,具体表现如下:当父级网格容器使用 repeat() 函数定义行网格时,子网格无法正确地继承行大小。这个问题存在于子级网格容器的列网格中,但列网格的大小在行方向上是无法继承的。

-- -------------------- ---- -------
------- -
  -------- -----
  -------------- --------- ---- - --------- -----
-

------ -
  -------- -----
  -------------- --------- ---- - --------
-

在上面的例子中,子网格是无法正确地继承父级行网格容器的高度,因此在实际的布局中将无法达到预期的效果。

解决方案

为了解决这个问题,我们可以添加一个中间网格容器,并在父级和子级之间使用相同的网格维度和大小。这样,子级网格就可以正确地继承父级网格容器的大小和位置,并正确地定位。

-- -------------------- ---- -------
------- -
  -------- -----
  -------------- --------- ---- - --------- -----
-

------------- -
  -------- -----
  -------------- --------
-

------ -
  -------- -----
-

在上面的示例代码中,中间网格容器中的子级网格容器将正确地继承行高,并正确地放置。

总结

CSS Grid 子网格 subgrid 是一个非常有用的特性,但在 Chrome 58 中存在一个 bug,可能会影响前端开发者的使用体验。为了解决这个问题,我们可以添加一个中间网格容器,并在父级和子级之间使用相同的网格维度和大小。这样可以让子级网格正确地继承父级网格容器的大小和位置,并正确地定位。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64f46777f6b2d6eab3d6ed8b

纠错
反馈