Именование grid-элементов с помощью grid-area
Области grid получают свои имена с помощью двух свойств, работающих вместе. На grid-элементе grid-area присваивает имя; на grid-контейнере grid-template-areas использует эти имена, чтобы определить области внутри макета.
В этом значении каждая строка записывается внутри собственной пары апострофов, а именованные элементы перечисляются через пробел. Поэтому второй набор апострофов добавляет вторую строку.
Grid-элемент без имени обозначается знаком точки (.).
Охват пяти столбцов
Если присвоить item1 имя «myHeader», он сможет занять все пять столбцов макета сетки с пятью столбцами.
Output: complete HTML page
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Named Grid Area Span</title>
<style>
.container {
display: grid;
grid-template-areas: 'myHeader myHeader myHeader myHeader myHeader';
gap: 10px;
background-color: #2196F3;
padding: 10px;
}
.container > div {
background-color: rgba(255, 255, 255, 0.8);
text-align: center;
padding: 20px;
font-size: 30px;
}
.item1 {
grid-area: myHeader;
}
</style>
</head>
<body>
<h1>Named Grid Area</h1>
<div class="container">
<div class="item1">1</div>
<div class="item2">2</div>
<div class="item3">3</div>
<div class="item4">4</div>
<div class="item5">5</div>
<div class="item6">6</div>
</div>
</body>
</html>
Знак точки для безымянных элементов
В этом макете сетки с пятью столбцами «myHeader» занимает три столбца, а знаки точки обозначают элементы без имени.
Output: complete HTML page
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Period Sign No Name</title>
<style>
.container {
display: grid;
grid-template-areas: 'myHeader myHeader myHeader . .';
gap: 10px;
background-color: #2196F3;
padding: 10px;
}
.container > div {
background-color: rgba(255, 255, 255, 0.8);
text-align: center;
padding: 20px;
font-size: 30px;
}
.item1 {
grid-area: myHeader;
}
</style>
</head>
<body>
<h1>Period Sign for Unnamed Items</h1>
<div class="container">
<div class="item1">1</div>
<div class="item2">2</div>
<div class="item3">3</div>
<div class="item4">4</div>
<div class="item5">5</div>
<div class="item6">6</div>
</div>
</body>
</html>
Охват столбцов и строк
Здесь «myHeader» занимает два столбца и две строки сетки.
Output: complete HTML page
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Span Columns and Rows</title>
<style>
.container {
display: grid;
grid-template-areas:
'myHeader myHeader . . .'
'myHeader myHeader . . .';
gap: 10px;
background-color: #2196F3;
padding: 10px;
}
.container > div {
background-color: rgba(255, 255, 255, 0.8);
text-align: center;
padding: 20px;
font-size: 30px;
}
.item1 {
grid-area: myHeader;
}
</style>
</head>
<body>
<h1>Span Columns and Rows</h1>
<div class="container">
<div class="item1">1</div>
<div class="item2">2</div>
<div class="item3">3</div>
<div class="item4">4</div>
<div class="item5">5</div>
<div class="item6">6</div>
</div>
</body>
</html>
Создание готового шаблона веб-страницы
Присвойте имя каждому grid-элементу, и grid-template-areas сможет описать полный шаблон макета веб-страницы.
Пример
Готовый шаблон веб-страницы, созданный путём именования каждого grid-элемента, с областями шапки, меню, основного содержимого, правой колонки и подвала.
Output: complete HTML page
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Webpage Template</title>
<style>
.item1 { grid-area: header; }
.item2 { grid-area: menu; }
.item3 { grid-area: main; }
.item4 { grid-area: right; }
.item5 { grid-area: footer; }
.container {
display: grid;
grid-template-areas:
'header header header header header header'
'menu main main main main right'
'menu footer footer footer footer footer';
gap: 10px;
background-color: #2196F3;
padding: 10px;
}
.container > div {
background-color: rgba(255, 255, 255, 0.8);
text-align: center;
padding: 20px;
font-size: 30px;
}
</style>
</head>
<body>
<h1>Grid Webpage Template</h1>
<div class="container">
<div class="item1">Header</div>
<div class="item2">Menu</div>
<div class="item3">Main</div>
<div class="item4">Right</div>
<div class="item5">Footer</div>
</div>
</body>
</html>