【发布时间】:2018-04-10 23:09:11
【问题描述】:
我有一个动态数量的元素(所有尺寸都相同)。我想将它们放置在网格中,以便它们按列排序,具有基于可用容器宽度的动态列数,以及基于元素数的动态行数。
例如,假设有 9 个元素:
1 4 7
2 5 8
3 6 9
但如果容器宽度扩大:
1 3 5 7 9
2 4 6 8
或缩小:
1 6
2 7
3 8
4 9
5
当项目按行而不是按列定位时,这可以正常工作。此外,如果我明确设置行数,它可以正常工作,但如果我对行和列都使用自动填充,它只会在一行中显示所有内容。
这是一个简单的示例,我希望它被渲染为 3x3 网格: https://codepen.io/anon/pen/ZxPQNd
#grid {
width: 320px;
border: 1px solid red;
display: grid;
grid-gap: 10px;
grid-auto-flow: column;
grid-template-rows: repeat(auto-fill, 100px);
grid-template-columns: repeat(auto-fill, 100px);
grid-auto-columns: 100px;
grid-auto-rows: 100px;
}
#grid>div {
background: lime;
}
<div id="grid">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
</div>
【问题讨论】:
-
你试过弹性查询和媒体查询吗?
-
为什么会呈现为 3x3 网格?它为列占用尽可能多的空间,在这种情况下就足够了。
-
我认为这个问题最适合 column-count 而不是 display: grid
-
尽量避免媒体查询,因为它们需要离散的大小,并且列数仍然需要明确的列数,而我希望它自动计算出适合可用的列数空间。