DevSkillRoad

Grid. Часть 2

🧩 grid-column, grid-row, grid-area, выравнивание в Grid

В прошлой лекции мы научились создавать сетку. Теперь научимся размещать элементы в нужных местах, объединять ячейки и управлять выравниванием.

1. grid-column — объединение колонок

Позволяет элементу занимать несколько колонок.

Что такое «линии» в Grid?

В Grid есть невидимые линии, которые разделяют колонки и строки. Например, если у вас 3 колонки, то линий будет 4:

Запись grid-column: 1 / 3 означает: элемент начинается с линии 1 и заканчивается на линии 3, то есть занимает колонки 1 и 2.

.grid-container {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
}
.item {
    grid-column: 1 / 3;  /* с линии 1 до линии 3 (занимает 2 колонки) */
}
1/3 (занимает 2 колонки)
2
3
4
5
6

✅ Первый элемент занял колонки 1 и 2 (с линии 1 до линии 3)

Сокращённая запись с span:

.item {
    grid-column: span 2;  /* занять 2 колонки, начиная с текущей позиции */
}
1
span 2 (занимает 2 колонки)
3
4

✅ Второй элемент растянулся на 2 колонки

2. grid-row — объединение строк

Работает так же, как grid-column, но для строк. Линии строк считаются аналогично.

.grid-container {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    grid-template-rows: repeat(3, 60px);
}
.item {
    grid-row: 1 / 3;  /* с линии 1 до линии 3 (занимает 2 строки) */
}
1/3 (занимает 2 строки)
2
3
4
5
6

✅ Первый элемент занял строки 1 и 2 (с линии 1 до линии 3)

3. grid-area — размещение элемента в сетке

grid-area позволяет указать, какие строки и колонки занимает элемент. Записывается так:

grid-area: строка-начала / колонка-начала / строка-конца / колонка-конца

Например: grid-area: 2 / 2 / 4 / 4; — элемент начинается со строки 2 и колонки 2, заканчивается на строке 4 и колонке 4 (занимает 2 строки и 2 колонки).

.grid-container {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    grid-template-rows: repeat(4, 50px);
}
.item {
    grid-area: 2 / 2 / 4 / 4;
}
строка 1, колонки 1-4
колонка 1, строки 2-4
центр (строки 2-3, колонки 2-3)
низ (строка 4, колонки 2-4)

✅ Разные элементы занимают разные области сетки

grid-template-areas — рисуем сетку словами (самый понятный способ)

Как это работает: Вы пишете схему будущей сетки прямо в CSS. Каждая строка в кавычках — это одна строка сетки. Каждое слово — это имя области, которая может занимать одну или несколько ячеек подряд.

Пример:

.grid-container {
    display: grid;
    grid-template-columns: 1fr 2fr 1fr;
    grid-template-areas: 
        "header header header"
        "sidebar content content"
        "footer footer footer";
}
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.content { grid-area: content; }
.footer { grid-area: footer; }

Как читать эту схему:

header
sidebar
content
footer

✅ Типовая структура сайта: шапка, боковая панель, основной контент, подвал

📌 Правила grid-template-areas:
  • Одинаковые слова в одной строке подряд → объединяются в одну область
  • Разные слова → разные ячейки
  • Точка . → пустая ячейка

4. justify-items и align-items — выравнивание всех элементов в ячейках

Управляют выравниванием всех элементов в сетке по горизонтали (justify-items) и вертикали (align-items) внутри своих ячеек.

Возможные значения:

.grid-container {
    display: grid;
    grid-template-columns: repeat(3, 120px);
    justify-items: center;
    align-items: center;
}
1
2
3
4
5
6

✅ Все элементы выровнены по центру своих ячеек (и по горизонтали, и по вертикали)

5. justify-self и align-self — выравнивание одного элемента

Переопределяют выравнивание для конкретного элемента.

.grid-container {
    display: grid;
    grid-template-columns: repeat(3, 130px);
    justify-items: start;
}
.special {
    justify-self: center;
}
1
2 (center)
3
4
5
6

✅ Второй элемент выровнялся по центру, остальные — по левому краю

📓 Из тетради: «Grid даёт полный контроль над двухмерной раскладкой. Научитесь комбинировать объединение ячеек и выравнивание — сможете сверстать любой макет: от визитки до панели администратора».