Мы можем использовать auto-fit
, который создает столбцы только при необходимости, в отличие от auto-fill
и текущей настройки, которая создает столбцы даже тогда, когда они не нужны.
Это будет работать, если мы знаем максимальное количество столбцов у нас будет go с 5.
Наш grid-template-columns becomes
вот так:
grid-template-columns: repeat(auto-fit, minmax(0px,calc((100% - ( .25rem * 4)) / 5)));
Вместо предопределенных 5 столбцов мы вычисляем 5 столбцов из ширины родительского элемента, вычитая grid-gap
И, наконец, мы применяем justify-content: flex-end;
.grid-container {
background-color: coral;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(0,calc((100% - ( .25rem * 4)) / 5)));
grid-gap: .25rem;
padding: 1rem;
justify-content: flex-end;
}
.grid-child {
background-color: saddlebrown;
color: white;
padding: 1rem;
}
<div class="grid-container">
<div class="grid-child">1</div>
<div class="grid-child">2</div>
<div class="grid-child">3</div>
<div class="grid-child">4</div>
<div class="grid-child">5</div>
</div>
<div class="grid-container">
<div class="grid-child">1</div>
<div class="grid-child">2</div>
<div class="grid-child">3</div>
<div class="grid-child">4</div>
</div>
<div class="grid-container">
<div class="grid-child">1</div>
<div class="grid-child">2</div>
<div class="grid-child">3</div>
</div>