Display: Grid
Двумерная сетка: линии, дорожки, fr, minmax, span и place-items.
На этой странице
Флекс тянет одну ось. Grid сразу рисует колонки и ряды. Таблица в HTML для данных. Сетка в CSS для раскладки: шапка на всю ширину, карточки, подвал.
Контейнер и линии
Контейнер: элемент с display: grid. Прямые дети становятся предметами сетки. Линия режет поле. Между двумя соседними линиями лежит дорожка (колонка или ряд). Клетка: одна ячейка. Область: несколько клеток подряд.
Линии считают с 1. -1 это последняя линия с конца.
.board {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 10px;
}Шесть детей сами заполняют два ряда. Ряды auto, пока не задали grid-template-rows.
Дорожки, gap и fr
.board {
display: grid;
grid-template-columns: 12rem 1fr 1fr;
grid-template-rows: auto 1fr;
gap: 12px;
}Три значения в grid-template-columns это три колонки. gap это воздух между дорожками, не margin снаружи карточки.
fr = fraction, доля свободного места после фиксированных треков и зазоров. Это не «frame» и не em из единиц.
Почему 1fr иногда не делится поровну
Трек по умолчанию не хочет стать уже содержимого. Длинное слово раздувает колонку. Для равных карточек пишите minmax(0, 1fr): ноль разрешает сжаться, 1fr делит остаток.
.cards {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 16px;
}repeat(3, …) это три одинаковые дорожки. На узкой ширине три колонки часто рано: сначала 1fr, колонки добавляете через min-width. Это разбор на мобильной адаптации.
Занять несколько клеток
Предмет сам садится в следующую свободную клетку. Чтобы шапка пересекла все колонки:
.hero {
grid-column: 1 / -1;
}1 / -1 от первой линии до последней. Не эмулируйте это отрицательным margin.
Выравнивание: place-items
По умолчанию предмет растягивается на клетку (stretch). place-items это сокращение: align-items + justify-items. place-items: center ставит коробку по её ширине и высоте в середину клетки.
.tiles {
display: grid;
grid-template-columns: 1fr 1fr;
place-items: center;
gap: 8px;
}по умолчанию
place-items: center
Частые значения: start, center, end, stretch. Для одного предмета: place-self, не ломайте всю сетку.
Когда не Grid
Ряд кнопок, «прижать вправо», одна ось и gap между чипами: флекс. Grid, когда карта двумерная и предмет должен сесть и в колонку, и в ряд.
Что здесь нарочно нет
auto-fit / auto-fill, именованные grid-template-areas, subgrid. Когда переварите базу: гайд по grid на Доке.