【发布时间】:2019-01-17 20:33:13
【问题描述】:
我有一个我认为很简单的任务:给定 x 个项目,在网格中显示它们,每列是内容的宽度。如果列数超过容器的宽度,则新建一行并继续
我已经设法让列显示和换行,但只有如果我为列定义了固定宽度
https://stackblitz.com/edit/angular4-dxkvmt
如何使每行上的每个“标签”适合内容,但当标签数量超过可用视图空间时移动到新行?
我试过了
grid-template-columns: repeat(auto-fill,max-content);
这给每个标签一行
grid-template-columns: repeat(auto-fill,minmax(20px,max-content));
将所有列设为 20px .. 但它们在调整大小时会正确流动
不胜感激。我对 css 网格不是特别熟练,所以可能忽略了一些简单的事情
【问题讨论】:
-
您可以尝试使用
display: flex和flex-wrap: wrap代替网格。 -
是的 - 这似乎可以解决问题;)在我确认这是答案之前,我需要检查更多的东西。谢谢!
-
不幸的是,CSS-Grid 无法满足您的要求。它需要至少一个硬编码数字来初始化网格。 Flexbox 是您的最佳选择。
-
这是我觉得 CSS Grid 唯一不足的地方。我希望有一个解决这个非常常见的问题的方法。将不得不求助于好的旧 Flex,但我现在已经养成了 Grid 的习惯。 :(
-
@ParamSingh 有点晚了,但 Grid 的设计并不是为了包罗万象,就像 Flexbox 不是一样。 按设计,您可以将 Grid 和 flexbox 一起用于其中一个无法自行处理的事情:-)。