У меня есть макет, в котором несколько элементов будут выровнены в сетке. Давайте использовать следующее в качестве примера:
.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, когда страница масштабируется. В идеале я хотел бы использовать minmax
в директиве repeat
, например:
grid-template-columns: repeat( minmax(1, 3), minmax(300px, 1fr) );
но, конечно, это не работает. Как я могу ограничить повторение до 3 столбцов, сохраняя при этом мои настройки для уменьшения масштаба с помощью auto-fit
?