<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>Пишем гриды</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- создаём контейнер, который будет отвечать за нашу сетку -->
<div class="container">
<!-- и создаём 5 вложенных элементов -->
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
</div>
</body>
</html>
/*общие настройки сетки*/
.container {
display: grid; /* подключаем сетку */
border: 5px solid #138900; /*рисуем зелёные рамки*/
}
/*внешний вид ячеек*/
.container > * {
background-color: #cfe8dc; /*фоновый цвет*/
border-radius: 5px; /*скругление углов*/
padding: 7px; /*отступ от содержимого до края ячейки*/
margin: 1px; /*расстояние от одной границы ячейки до другой*/
}
/*общие настройки сетки*/
.container {
display: grid;
border: 5px solid #138900;
grid-template-columns: 150px 150px 150px; /*добавляем три колонки размерами 150 пикселей*/
}
/*внешний вид ячеек*/
.container > * {
background-color: #cfe8dc;
border-radius: 5px;
padding: 7px;
margin: 1px;
}
/*общие настройки сетки*/
.container {
display: grid;
border: 5px solid #138900;
grid-template-columns: 150px 150px 150px;
grid-template-rows: 80px; /* Будет создан 1 ряд высотой 80px */
}
/*внешний вид ячеек*/
.container > * {
background-color: #cfe8dc;
border-radius: 5px;
padding: 7px;
margin: 1px;
}
/*общие настройки сетки*/
.container {
display: grid;
border: 5px solid #138900;
grid-template-columns: 150px 150px 150px;
grid-template-rows: 80px 80px 80px ; /* Будет создано 3 ряда высотой 80px*/
}
/*внешний вид ячеек*/
.container > * {
background-color: #cfe8dc;
border-radius: 5px;
padding: 7px;
margin: 1px;
}
/*общие настройки сетки*/
.container {
display: grid;
border: 5px solid #138900;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: 80px 1fr 80px ;
}
/*внешний вид ячеек*/
.container > * {
background-color: #cfe8dc;
border-radius: 5px;
padding: 7px;
margin: 1px;
}
/*общие настройки сетки*/
.container {
display: grid;
border: 5px solid #138900;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: 80px 1fr 80px;
height: 350px; /*Задали высоту контейнера*/
}
/*внешний вид ячеек*/
.container > * {
background-color: #cfe8dc;
border-radius: 5px;
padding: 7px;
margin: 1px;
}
/*общие настройки сетки*/
.container {
display: grid;
border: 5px solid #138900;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: 80px 1fr 80px;
height: 100vh; /*Задали высоту контейнера*/
}
/*внешний вид ячеек*/
.container > * {
background-color: #cfe8dc;
border-radius: 5px;
padding: 7px;
margin: 1px;
}
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>Пишем гриды</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- создаём контейнер, который будет отвечать за нашу сетку -->
<div class="container">
<header class="bg-header grid-header"> Шапка сайта</header>
<aside class=" bg-aside grid-aside">Сайдбар</aside>
<main class=" bg-main grid-main">Основной контент</main>
</div>
</body>
</html>
/* основная настройка*/
body {
padding: 5;
margin: 0px; /*убираем верхнее и нижнее поле, равное 1em*/
font-family: "Montserrat", sans-serif;
font-size: 18px;
}
/* делаем оформление*/
.bg-header {
padding: 15px;
background: #E7ECEF;
}
.bg-aside {
padding: 15px;
background: #6096BA;
}
.bg-main {
padding: 15px;
background: #A3CEF1;
}
/* задаем гриды и количество колонок и строк*/
.container {
display: grid;
grid-template-columns: repeat(12, 1fr);
grid-template-rows: repeat(12, 1fr);
height: 99vh;
}
/*задаем гибкую настройку хедеру*/
.grid-header {
grid-column-start: 1;
grid-column-end: 13;
grid-row-start: 1;
grid-row-end: 3;
}
/*задаем гибкую настройку сайдбару*/
.grid-aside {
grid-column-start: 1;
grid-column-end: 4;
grid-row-start: 3;
grid-row-end: 13;
}
/*задаем гибкую настройку основному контенту*/
.grid-main {
grid-column-start: 4;
grid-column-end: 13;
grid-row-start: 3;
grid-row-end: 13;
}
/*задаем гибкую настройку хедеру*/
.grid-header {
grid-column-start: 4; /* Поменяли значение с 1 на 4*/
grid-column-end: 13;
grid-row-start: 1;
grid-row-end: 3;
}
/* Полная версия записи для строк(рядов) */
grid-row-start: 2; /* Элемент начинается со 2 линии рядов */
grid-row-end: 4; /* Элемент заканчивается на 4 линии рядов */
/*Сокращенная версия*/
grid-row: 2 / 4; /* скачала указывается начальное значение, затем через знак деления конечное*/
/* Полная версия записи для колонок(столбцов)*/
grid-column-start: 1;
grid-column-end: 3;
/*Сокращенная версия*/
grid-column: 1 / 3; /* скачала указывается начальное значение, затем через знак деления конечное*/
/*Можно написать с помощью сокращенных свойств*/
.grid-header {
grid-column: 1/13;
grid-row: 1/3;
}
.grid-aside {
grid-column: 1/4;
grid-row: 3/13;
}
.grid-main {
grid-column: 4/13;
grid-row: 3/13;
}
/*Сокращенная запись*/
.grid-header {
grid-column: 1/-1; /*Поменяли 13 на -1. Отсчет с конца*/
grid-row: 1/3;
}
.grid-aside {
grid-column: 1/4;
grid-row: 3/-1; /*Поменяли 13 на -1. Отсчет с конца*/
}
.grid-main {
grid-column: 4/-1; /*Поменяли 13 на -1. Отсчет с конца*/
grid-row: 3/-1; /*Поменяли 13 на -1. Отсчет с конца*/
}
/*Второй вариант полной записи*/
.grid-header {
grid-column-start: 1;
grid-column-end: -1; /*Поменяли 13 на -1. Отсчет с конца*/
grid-row-start: 1;
grid-row-end: 3;
}
.grid-aside {
grid-column-start: 1;
grid-column-end: 4;
grid-row-start: 3;
grid-row-end: -1; /*Поменяли 13 на -1. Отсчет с конца*/
}
.grid-main {
grid-column-start: 4;
grid-column-end: -1; /*Поменяли 13 на -1. Отсчет с конца*/
grid-row-start: 3;
grid-row-end: -1; /*Поменяли 13 на -1. Отсчет с конца*/
}
grid-column: 1/ span 4; /* Указывает, что элемент занимает 4 колонки по горизонтали */
grid-row: 1/ span 2; /* Указывает, что элемент занимает 2 строки по вертикали*/
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>Пишем гриды</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- создаём контейнер, который будет отвечать за нашу сетку -->
<div class="container">
<nav class="bg-nav grid-nav">Меню</nav>
<header class="bg-header grid-header"> Шапка сайта</header>
<aside class=" bg-aside grid-aside">Сайдбар</aside>
<main class=" bg-main grid-main">Основной контент</main>
</div>
</body>
</html>
body {
padding: 5;
margin: 0px; /*убираем верхнее и нижнее поле, равное 1em*/
font-family: "Montserrat", sans-serif;
font-size: 18px;
}
.bg-header {
padding: 15px;
background: #E7ECEF;
}
.bg-nav {
padding: 15px;
background: #8b8c89;
}
.bg-aside {
padding: 15px;
background: #6096BA;
}
.bg-main {
padding: 15px;
background: #A3CEF1;
}
.container {
display: grid;
grid-template-columns: repeat(12, 1fr);
grid-template-rows: repeat(12, 1fr);
height: 99vh;
}
.grid-header {
grid-column: 1/-1;
grid-row: 1/ span 2; /*Указали, что элемент занимает 2 ячейки по вертикали вместо grid-row: 1/3; */
}
.grid-nav {
grid-column: 1/ span 2; /*Указали, что элемент занимает 2 ячейки по горизонтали вместо grid-column: 1/ 3;*/
grid-row: 3/-1;
}
.grid-aside {
grid-column: span 2; /* Использование только ключевого слова. Браузер разместить элемент с тем количеством строк и колонок, которое указано. В нашем случае 2 колонки.*/
grid-row: 3/-1;
}
.grid-main {
grid-column: 3/ span 8; /* Указали, что элемент занимает 8 ячеек по горизонтали */
grid-row: 3/-1;
}
grid-template-columns: [название линии] размер [название линии] размер;
grid-template-rows: [название линии] размер [название линии] размер;
Например:
grid-template-columns: [header-top] 1fr repeat(3, 1 fr);
/* [header-top] 1fr - создаст именованую линию header-top и полосу шириной в 1 фракцию, затем
repeat(3, 1 fr) создаст 3 полосы шириной в 1 фракцию */
Или для удобства можно начать с новой линии:
grid-template-columns:
[header-start] 1fr /* Обратите внимание, что знак ; не ставится до тех пор пока не закончите перечисление*/
[header-end] 10px
[nav-start] 1fr
[nav-end] 10px
[main-start] 1fr
[main-end] -1;
grid-template-rows:
[aside-start] 1fr
[aside-end] 10px
[content-start] 1fr;
.special-item {
grid-column: header-start / nav-end;
grid-row: aside-start;
background-color: #bbb;
}
.container {
display: grid;
grid-template-columns:
[nav-start] repeat(2, 1fr) /*Левая линия от которой начинает отрисовываться меню */
[main-start] repeat(8, 1fr) /* Линия от которой начинается основной контент. Также ограничивает ширину nav (меню) */
[aside-start] repeat(2, 1fr); /* Линия от которой начинается сайдбар */
grid-template-rows:
[header-start] 1fr 1fr /* Самая верхняя линия от которой отрисуется шапка сайта */
[content-start] repeat(9, 1fr); /* Линия, откуда начинается основной контент сайта - nav, main, aside. Нужна для ограничения высоты шапки */
height: 99vh;
}
.grid-header {
grid-column: 1/-1;
grid-row-start: header-start; /* Начинается шапка сайта с header-start */
grid-row-end: content-start; /* Шапка заканчивается на контенте, тем самым мы ограничили размеры хедера в 2 фракции */
}
.grid-nav {
grid-column-start: nav-start; /* Начало меню */
grid-column-end: main-start; /* Ограничили меню основным контентом */
grid-row: 3/-1;
}
.grid-aside {
grid-column-start: aside-start; /* Начало сайдбара */
grid-column-end: -1;
grid-row: 3/-1;
}
.grid-main {
grid-column-start: main-start; /* Начало основного контента */
grid-column-end: 11;
grid-row: 3/-1;
}
grid-template-areas:
"имя имя2 имя3"
"имя имя2 имя3"
"имя none .";
// или можно так
grid-template-areas: "имя имя2 имя3" "имя имя2 имя3" "имя none .";
"имя имя2 имя3" - в значении внутри кавычек нужно через пробелы указывать имена. Каждые кавычки с именами будут представлять собой ряд сетки, а имена внутри кавычек задают колонки.
"имя имя имя2" - если указать одно и тоже имя несколько раз подряд, то имя объединит ячейки и мы получим область (большую ячейку). Объединять ячейки таким способом можно не только внутри ряда, но и между рядами.
. (точка) - указывается вместо имени и обозначает ячейку которую нужно пропустить (пустую ячейку). Можно использовать несколько точек подряд, пока между ними нет пробела они будут считаться за одну.
none — область не определена
grid-template-areas:
"имя имя2 имя3"
"имя имя2 имя3"
"имя none .";
/* Указываем элементу область */
.grid-element-1 {
grid-area: имя;
}
.grid-element-2 {
grid-area: имя2;
}
.grid-element-3 {
grid-area: имя3;
}
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>grid-template-areas</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<header class="bg-header grid-header">grid-area: header;</header>
<nav class="bg-nav grid-nav">grid-area: nav;</nav>
<aside class=" bg-aside grid-aside">grid-area: aside;</aside>
<main class=" bg-main grid-main">grid-area: main;</main>
<footer class="bg-footer grid-footer">grid-area: footer;</footer>
</div>
</body>
</html>
/* Общие настройки */
body {
padding: 5;
margin: 20px;
font-family: "Montserrat", sans-serif;
font-size: 16px;
}
/* Фон блоков */
.bg-header {
padding: 5px;
background: #E7ECEF;
}
.bg-nav {
padding: 5px;
background: #8b8c89;
}
.bg-aside {
padding: 5px;
background: #6096BA;
}
.bg-main {
padding: 5px;
background: #A3CEF1;
}
.bg-footer {
padding: 5px;
background: #E7ECEF;
}
/* В контейнере задаем визуальный макет */
.container {
display: grid;
grid-template-columns: repeat(6, 100px); /* говорим, что будет 6 колонок размером 100 пикселей */
grid-template-rows: repeat(4, 100px); /* говорим, что будет 4 строки размером 100 пикселей */
grid-template-areas: /* Задаем именование областей */
"header header header header aside aside" /* хедер будет занимать 4 колонки, а сайдбар - 2 */
"nav main main main aside aside" /* nav займет 1 колонку, main - 3, сайдбар - 2 */
"nav main main main aside aside" /* nav займет 1 колонку, main - 3, сайдбар - 2 */
"footer footer footer footer footer footer"; /* footer займет 6 колонок */
}
/* Зададим элементу нужную область */
.grid-header {
grid-area: header;
}
.grid-nav {
grid-area: nav;
}
.grid-main {
grid-area: main;
}
.grid-aside {
grid-area: aside;
}
.grid-footer {
grid-area: footer;
}
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>grid-template-areas пропуск ячейки</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<div class="dark-blue grid-dark"></div>
<div class="blue grid-blue"></div>
<div class="light-blue grid-light"></div>
</div>
</body>
</html>
body {
padding: 5;
margin: 20px;
font-family: "Montserrat", sans-serif;
font-size: 16px;
}
.dark-blue {
padding: 5px;
background: #023e8a;
}
.blue {
padding: 5px;
background: #0077b6;
}
.light-blue {
padding: 5px;
background: #6096BA;
}
.container {
display: grid;
grid-template-columns: repeat(3, 100px);
grid-template-rows: repeat(3, 100px);
grid-template-areas:
"dark-blue blue light-blue"
"dark-blue blue light-blue"
"dark-blue blue light-blue";
}
.grid-dark {
grid-area: dark-blue;
}
.grid-blue {
grid-area: blue;
}
.grid-light {
grid-area: light-blue;
}
.container {
display: grid;
grid-template-columns: repeat(3, 100px);
grid-template-rows: repeat(3, 100px);
grid-template-areas:
"dark-blue . light-blue"
"dark-blue blue light-blue"
"dark-blue . light-blue";
}