【发布时间】:2019-04-12 15:22:58
【问题描述】:
我有一个布局,其中多个项目将在网格中对齐。我们以以下为例:
.grid-container {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-gap: 20px;
}
.grid-item {
display: block;
width: 100%;
background-color: purple;
color: white;
text-align: center;
padding: 30px 5px;
}
<div class="grid-container">
<div class="grid-item">Item</div>
<div class="grid-item">Item</div>
<div class="grid-item">Item</div>
<div class="grid-item">Item</div>
<div class="grid-item">Item</div>
<div class="grid-item">Item</div>
<div class="grid-item">Item</div>
<div class="grid-item">Item</div>
<div class="grid-item">Item</div>
</div>
在上面的代码中,网格将每行重复 3 列,每个项目将扩展为行宽的 1/3。问题是在响应式情况下,网格将始终重复 3 列。
如果我将repeat 值更改为auto-fit 并调整列大小以使用minmax,我可以控制页面缩小的方式并将列宽和计数减少到某个合理的值。所以调整后的代码看起来像这样:
.grid-container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px,1fr));
grid-gap: 20px;
}
.grid-item {
display: block;
width: 100%;
background-color: teal;
color: white;
text-align: center;
padding: 30px 5px;
}
<div class="grid-container">
<div class="grid-item">Item</div>
<div class="grid-item">Item</div>
<div class="grid-item">Item</div>
<div class="grid-item">Item</div>
<div class="grid-item">Item</div>
<div class="grid-item">Item</div>
<div class="grid-item">Item</div>
<div class="grid-item">Item</div>
<div class="grid-item">Item</div>
</div>
按比例缩小效果很好,但这是我遇到问题的地方 - 我想在页面放大时将列数限制为 3。理想情况下,我想在repeat 指令中使用minmax,如下所示:
grid-template-columns: repeat( minmax(1, 3), minmax(300px, 1fr) );
但这当然行不通。如何将重复限制为 3 列,同时仍保持使用 auto-fit 的缩小设置?
【问题讨论】: