grid-gap и области (areas)
grid-gap(современное имя —gap) задаёт отступы между ячейками Grid, аgrid-template-areasпозволяет создать именованную карту областей сетки для декларативного размещения элементов.
Зачем нужно
gap убирает необходимость добавлять margin к каждому grid-элементу — отступы задаются один раз на контейнере и не добавляются к внешним краям. grid-template-areas в сочетании с grid-area превращает CSS-сетку в визуальную схему страницы: хедер, сайдбар, контент, футер — сразу видно из кода.
Где используется
- Отступы между карточками в сетке (
gap) - Страничная раскладка с именованными областями
- Адаптивное переключение макета через медиазапросы
gap (grid-gap)
grid-gap — устаревшее имя; используйте gap (работает и в Flexbox).
.grid {
display: grid;
gap: 16px; /* одинаковые отступы по строкам и колонкам */
gap: 16px 24px; /* row-gap column-gap */
row-gap: 16px; /* только между строками */
column-gap: 24px; /* только между колонками */
}
/* Пример: карточная сетка */
.cards {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 24px;
}
<div class="cards">
<div class="card">1</div>
<div class="card">2</div>
<div class="card">3</div>
</div>
grid-template-areas
.page {
display: grid;
grid-template-columns: 240px 1fr;
grid-template-rows: auto 1fr auto;
gap: 16px;
grid-template-areas:
"header header"
"sidebar content"
"footer footer";
}
Точка (.) обозначает пустую ячейку:
.page {
grid-template-areas:
"header header"
". content" /* левая ячейка пуста */
"footer footer";
}
Размещение элементов
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.content { grid-area: content; }
.footer { grid-area: footer; }
<div class="page">
<header class="header">Шапка</header>
<aside class="sidebar">Меню</aside>
<main class="content">Контент</main>
<footer class="footer">Подвал</footer>
</div>
Адаптивный макет
.page {
display: grid;
gap: 16px;
grid-template-areas:
"header"
"content"
"sidebar"
"footer";
}
@media (min-width: 768px) {
.page {
grid-template-columns: 240px 1fr;
grid-template-areas:
"header header"
"sidebar content"
"footer footer";
}
}
Частые ошибки
grid-gapвместоgap—grid-gapработает, но является устаревшим алиасом; предпочтительно использоватьgap- Прямоугольность областей — каждая именованная область в
grid-template-areasдолжна быть прямоугольной; Г-образные фигуры недопустимы - Имена с пробелами —
"main content"вgrid-template-areasозначает две колонки, а не одну с пробелом в имени
Связанные темы
- grid-template-areas -- именованные области
- grid-area -- сокращённое свойство
- gap (grid-gap) -- отступы между ячейками
- gap -- отступы между элементами
- _MOC Grid