auto-fill и auto-fit
auto-fillиauto-fit— ключевые слова дляrepeatвgrid-template-columns, которые автоматически определяют количество колонок в зависимости от доступного пространства.
Зачем нужно
Классические медиазапросы требуют ручного задания числа колонок для каждого брейкпоинта. auto-fill и auto-fit позволяют создать истинно адаптивную сетку одной строкой CSS — браузер сам вычисляет оптимальное количество колонок. Это мощнейший инструмент для карточных сеток.
Где используется
- Адаптивные карточные сетки без медиазапросов
- Галереи изображений
- Списки продуктов в интернет-магазинах
Синтаксис
.grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
/* или */
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
}
minmax(250px, 1fr) — колонка минимум 250px, максимум — вся доступная ширина.
auto-fill vs auto-fit: разница
auto-fill — заполняет колонками, даже пустыми
.grid-fill {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: 16px;
}
/* Если контейнер 800px и элементов мало — создаёт 4 колонки,
пустые колонки сохраняют место */
auto-fit — схлопывает пустые колонки
.grid-fit {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 16px;
}
/* Если контейнер 800px и только 2 элемента — они растягиваются
на всю ширину, пустые колонки схлопываются */
Практический пример
/* Адаптивная карточная сетка без медиазапросов */
.cards {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 24px;
}
<div class="cards">
<article>Карточка 1</article>
<article>Карточка 2</article>
<article>Карточка 3</article>
<article>Карточка 4</article>
<article>Карточка 5</article>
</div>
На ширине 900px: 3 колонки по ~280px. На ширине 600px: 2 колонки. На ширине 280px: 1 колонка.
Когда что использовать
| Сценарий | Рекомендация |
|---|---|
| Сетка с фиксированным числом элементов | auto-fit — заполнят всю ширину |
| Сетка с динамическим числом элементов | auto-fill — пустые колонки как плейсхолдеры |
| Галерея изображений | auto-fit — выглядит аккуратнее |
Частые ошибки
minmaxбез нижней границы в px —minmax(0, 1fr)даст колонки нулевой ширины; всегда задавайте разумный минимум в px- Ожидание
auto-fitвыровнять по сетке последнюю строку — если элементов нечётное число, последний растянется. Для равномерного заполнения используйте невидимые pseudo-элементы-заглушки auto-fill/auto-fitс фиксированным числом —repeat(3, 1fr)иrepeat(auto-fill, ...)несовместимы в одном вызове
Связанные темы
- grid-template-areas -- именованные области
- grid-auto-rows и grid-auto-columns
- gap (grid-gap) -- отступы между ячейками
- Responsive Design -- принципы
- _MOC Grid