repeat: повторение треков
Функция
repeatв CSS Grid позволяет кратко записать повторяющиеся треки вgrid-template-columnsиgrid-template-rowsвместо перечисления каждого трека вручную.
Зачем нужно
Вместо grid-template-columns: 1fr 1fr 1fr 1fr пишем grid-template-columns: repeat(4, 1fr). Это сокращает код и делает его поддерживаемым — чтобы изменить количество колонок, достаточно изменить одно число. Вместе с auto-fill и auto-fit создаёт адаптивные раскладки без медиазапросов.
Где используется
- Равные колонки в Grid (
repeat(3, 1fr)) - Адаптивные карточные галереи (
repeat(auto-fill, minmax(200px, 1fr))) - Сетки с чередующимися размерами треков
- Шаблоны страниц с повторяющимися строками
Синтаксис
repeat(<count>, <track-size>)
/* count: целое число, auto-fill, или auto-fit */
/* track-size: px, fr, %, minmax, auto */
Примеры
Фиксированное количество равных колонок
.grid {
display: grid;
grid-template-columns: repeat(4, 1fr); /* 4 равные колонки */
gap: 16px;
}
/* Эквивалентно: 1fr 1fr 1fr 1fr */
Чередующиеся размеры
.grid {
grid-template-columns: repeat(3, 1fr 2fr);
/* = 1fr 2fr 1fr 2fr 1fr 2fr — 6 колонок */
}
auto-fill: заполнить как можно больше колонок
.gallery {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: 20px;
}
/* Сколько колонок поместится — столько и будет */
<div class="gallery">
<div class="card">Карточка</div>
<div class="card">Карточка</div>
<div class="card">Карточка</div>
</div>
auto-fit: схлопывать пустые колонки
.gallery {
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
/* Пустые треки схлопываются до 0 — элементы растягиваются */
}
auto-fill vs auto-fit
auto-fill |
auto-fit |
|
|---|---|---|
| Пустые треки | Сохраняются (занимают место) | Схлопываются в 0 |
| Мало элементов | Элементы не растягиваются | Элементы заполняют контейнер |
Частые ошибки
repeatв строковых значениях — нельзя внутриgrid-template-areas.auto-fillс фиксированной шириной —repeat(auto-fill, 200px)безminmaxне даёт адаптивности.auto-fitсauto-fill— оба ключевых слова взаимоисключающие; выбирайте одно.