grid-area: сокращённое свойство
grid-area— свойство grid-элемента, которое либо задаёт ему имя для использования вgrid-template-areas, либо является shorthand дляgrid-row-start,grid-column-start,grid-row-end,grid-column-end.
Зачем нужно
grid-area — самый удобный способ размещения элементов в именованных областях Grid. Вместо записи четырёх координат (grid-row: 1 / 3; grid-column: 1 / 2) достаточно одного слова-имени. Это делает разметку страницы декларативной и читаемой.
Где используется
- Именованное размещение в
grid-template-areas(хедер, сайдбар, контент, футер) - Компактная замена
grid-row+grid-column - Адаптивная смена положения элементов через медиазапросы
Два режима использования
1. Именованная область (совместно с grid-template-areas)
.container {
display: grid;
grid-template-areas:
"header header"
"sidebar content"
"footer footer";
grid-template-columns: 240px 1fr;
grid-template-rows: auto 1fr auto;
}
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.content { grid-area: content; }
.footer { grid-area: footer; }
<div class="container">
<header class="header">Шапка</header>
<aside class="sidebar">Меню</aside>
<main class="content">Контент</main>
<footer class="footer">Подвал</footer>
</div>
2. Shorthand для координат линий
/* grid-area: row-start / col-start / row-end / col-end */
.item {
grid-area: 1 / 1 / 3 / 3;
/* эквивалент: */
/* grid-row: 1 / 3; */
/* grid-column: 1 / 3; */
}
/* Использование span */
.item {
grid-area: 2 / 1 / span 2 / span 3;
/* Начинается с row 2, col 1; занимает 2 строки и 3 колонки */
}
Адаптивное переключение макета
.page {
display: grid;
grid-template-areas:
"header"
"content"
"sidebar"
"footer";
}
@media (min-width: 768px) {
.page {
grid-template-areas:
"header header"
"sidebar content"
"footer footer";
grid-template-columns: 240px 1fr;
}
}
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.content { grid-area: content; }
.footer { grid-area: footer; }
Частые ошибки
- Имя в
grid-areaбез соответствующегоgrid-template-areas— элемент не будет размещён в области; имена должны точно совпадать - Пробелы в именах областей — имена не могут содержать пробелы:
main content— неверно,main-content— верно - Путаница с порядком значений shorthand — порядок:
row-start / col-start / row-end / col-end, а неcol / row
Связанные темы
- grid-template-areas -- именованные области
- grid-column и grid-row
- grid-gap и области (areas)
- _MOC Grid