Grid
↑ 1.3 CSS и SASS · ← Предыдущая · → Следующая
Зачем это на собесе
Grid — двумерная раскладка; спрашивают
fr,minmax,auto-fit,grid-template-areas.
Объяснение
.layout {
display: grid;
grid-template-columns: 240px 1fr; /* сайдбар + гибкая колонка */
grid-template-rows: auto 1fr auto;
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
gap: 16px;
min-height: 100vh;
}
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main { grid-area: main; }
/* Адаптивная сетка карточек без media queries */
.cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }| Понятие | Смысл |
|---|---|
fr | доля свободного пространства |
minmax(min, max) | диапазон размера трека |
repeat(n, …) / auto-fill / auto-fit | повторение; auto-fit схлопывает пустые треки |
grid-auto-flow, grid-auto-rows | неявные треки |
grid-column: 1 / span 2 | размещение по линиям |
place-items, justify-*, align-* | выравнивание |
subgrid | вложенная сетка использует треки родителя |
dense | заполнение пропусков |
Flexbox vs Grid: flex — одна ось (ряд или колонка), контент определяет размеры; grid — две оси, макет определяет размеры. Часто вместе: grid для каркаса страницы, flex внутри компонентов.
Нюансы и подводные камни
1frимеет минимумauto: длинное содержимое расширяет колонку — используйтеminmax(0, 1fr).- Разница
auto-fillиauto-fitпроявляется, когда элементов меньше, чем помещается. - Неявные строки создаются автоматически: задавайте
grid-auto-rows. - Grid не заменяет таблицу для табличных данных.
Практика
- Сверстайте каркас страницы через
grid-template-areasи перестройте на мобильных. - Сделайте галерею с
auto-fill/minmax. - Используйте
subgridдля выравнивания заголовков карточек.
Вопросы с ответами
Grid или Flexbox?
Grid — для двумерной раскладки, Flexbox — для одномерных рядов и выравнивания.
Что делает
minmax(240px, 1fr)?Колонка не уже 240px и растягивается до доли свободного места.