CSS 网格布局中的等高行:详细说明
与 Flexbox 不同,Flexbox 的行高由所需的最小高度决定对于其元素,CSS 网格布局使开发人员能够在整个页面中实现等高的行grid.
网格布局解决方案
实现等高的关键在于将网格容器的 grid-auto-rows 属性设置为 1fr。 Fr 单元旨在分配容器中的可用空间,类似于 Flexbox 中的 flex-grow 属性。
通过设置 grid-auto-rows: 1fr,网格内的所有行将具有相同的高度。这似乎违反直觉,因为 fr 应该动态分配空间。
理解 Fr 单位
然而,CSS 网格规范揭示了一个关键的细微差别:在处理动态网格尺寸时、“网格轨道”(本例中为行)调整大小以适应其内容。然后,每行的高度会适应最高(最大内容)的网格项。
这些行的最大高度变为 1fr 的长度,随后乘以每个网格轨道的弹性因子以确定其最终高度尺寸。这种机制确保所有行的高度相等。
为什么 Flexbox 达不到
Flexbox 与 CSS 网格不同,无法促进多行的行高度相等。根据 Flexbox 规范,Flex 项目只能在同一行内达到相同的高度:
“在多行 Flex 容器中,每行的交叉大小是包含 Flex 项目所需的最小大小线。”此规定可防止 Flexbox 将行扩展至超出其最小高度。
以上是CSS Grid 与 Flexbox 不同,如何实现等高行?的详细内容。更多信息请关注PHP中文网其他相关文章!