gpt4 book ai didi

css - 如何让不同长度的网格元素包裹起来?

转载 作者:行者123 更新时间:2023-11-28 19:30:37 25 4
gpt4 key购买 nike

使用 repeat()auto-fit/auto-fill 函数很容易让网格元素在 列或行有定义的长度模式

在下面的示例中,所有列的最小宽度为 100px,最大宽度为 1fr。

jsFiddle demo

#grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
grid-gap: 1em;
}

#grid > div {
background-color: #ccddaa;
padding: 10px;
}
<div id="grid">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>

但是当轨道没有长度模式(即长度随机变化)时,如何使网格元素环绕?

在下面的示例中,第一列的宽度为 60%。第二列是最小/最大 250px/1fr。如何让第二列在较小的屏幕上换行?

jsFiddle demo

#grid {
display: grid;
grid-template-columns: 60% minmax(250px, 1fr);
grid-gap: 1em;
}

#grid > div {
background-color: #ccddaa;
padding: 10px;
}
<div id="grid">
<div></div>
<div></div>
</div>

我知道 flexbox 和媒体查询提供了解决方案,但我想知道网格布局是否可以做到这一点。我搜索了 spec但没有找到任何东西。也许我错过了这一部分。感谢您的帮助。

最佳答案

网格元素实际上并不换行。您看到网格项“换行”到下一行的原因实际上是因为正在更改显式网格以保持在 minmax() 规定的约束范围内。 repeat()生成的列数与网格容器使用的宽度成正比,网格项按照列数逐一布局,新行创建为必要的。

因此,当有两列并且显式网格中有空间可以将该网格项插入第二列时,无法强制第二个网格项换行。此外,即使您可以告诉第二个网格项“换行”,这也意味着将它放在第一列的新行中,因此它的布局将受到控制通过第一列而不是第二列。让它仍然根据第二列调整大小当然会完全破坏网格布局。

如果打算通过将元素换行来适应较小的屏幕,则应使用 flex 布局,而不是网格布局。网格布局不适合此目的。

关于css - 如何让不同长度的网格元素包裹起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55121596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com