Расставляйте блоки с помощью Grid
Пишете в контейнере display: grid и grid-template-columns и расставляете блоки по ячейкам. Написанное сразу отображается вживую.
Задача: Создайте 3 равные колонки
Посмотрите каждое свойство Grid вживую на примере блоков: как строится сетка ячеек и что меняется. Затем переходите к «Практике».
Сетка ячеек начинается отсюда
Если задать контейнеру display: grid, он превращается в сетку ячеек, а блоки (grid-элементы) размещаются по строкам и колонкам. Flexbox одноосный, а Grid — двумерный (строки + колонки).
.maydon { display: grid; }
Задание колонок
grid-template-columns задаёт, сколько будет колонок и какой они ширины. 1fr = одна доля свободного места. repeat(3, 1fr) = три равные колонки. Можно и смешивать: 100px 1fr.
grid-template-columns: 1fr 1fr; grid-template-columns: repeat(3, 1fr);
Задание строк
grid-template-rows задаёт высоту строк. Если не задать, строки создаются автоматически (по содержимому). 1fr 1fr делает две строки равными по всей высоте.
grid-template-rows: 1fr 1fr; grid-template-rows: 80px 120px;
Промежуток между ячейками
gap добавляет равный промежуток между ячейками. Если хотите управлять по отдельности: column-gap (между колонками) и row-gap (между строками).
gap: 16px; column-gap: 24px; row-gap: 8px;
Горизонтальное выравнивание внутри ячейки
justify-items размещает каждый блок внутри своей ячейки по горизонтали (лево-право): start, center, end. Значение по умолчанию — stretch.
justify-items: center; justify-items: end;
Вертикальное выравнивание внутри ячейки
align-items размещает блоки внутри ячейки по вертикали (верх-низ): start, center, end. Оба сразу: place-items: center = центр и по горизонтали, и по вертикали.
align-items: center; place-items: center;
Выравнивание всей сетки целиком
Если ячейки меньше контейнера, justify-content размещает всю сетку по горизонтали, а align-content — по вертикали. Это отличается от justify-items: сдвигается не отдельный блок, а весь набор целиком.
justify-content: center; align-content: space-between;
Занять несколько ячеек
grid-column — свойство блока: задаёт, сколько колонок он займёт. span 2 = шириной в две колонки. Для строк — grid-row: span 2. Можно и по номерам линий: grid-column: 1 / 3.
.quti1 { grid-column: span 2; }
Точно в нужную ячейку
Линии Grid нумеруются начиная с 1. Чтобы поставить блок точно в одну ячейку, задайте grid-column и grid-row вместе. grid-column: 3 и grid-row: 2 = 3-я колонка, 2-я строка.
.quti1 { grid-column: 3; grid-row: 2; }
Макет по именам ячеек
grid-template-areas даёт ячейкам имена и рисует весь макет страницы наглядно. Каждый элемент получает grid-area: имя, а контейнер записывает строки как текст. Так строятся header, sidebar, footer.
grid-template-areas: "hd hd" "sd mn" "ft ft";
Готовы? 🎯
Теперь проверьте знания: в практике из 20 уровней пишете код и расставляете блоки по ячейкам.
Отлично!
Блоки встали по ячейкам.