Назад

Все свойства модуля CSS Grid Layout: исчерпывающее руководство по мощнейшему инструменту верстки

В мире веб-разработки создание адаптивных и сложных макетов долгое время было нетривиальной задачей. Верстальщики выкручивались с помощью floats, inline-block и таблиц, но эти методы были скорее костылями, чем элегантными решениями. Ситуация кардинально изменилась с появлением CSS Grid Layout — настоящего прорыва, предназначенного специально для двумерной компоновки страниц.

CSS Grid Layout — это мощнейший модуль каскадных таблиц стилей, который позволяет создавать сложные, responsive макеты, организуя контент в строки и столбцы. В отличие от Flexbox, который в первую очередь предназначен для одномерных layouts (либо по строке, либо по столбцу), Grid даёт вам полный контроль над обоими измерениями одновременно. Вы можете precisely позиционировать элементы в любой области вашей сетки, создавая профессиональные интерфейсы с минимальными усилиями.

Этот инструмент стал отраслевым стандартом, и его понимание — обязательный навык для современного фронтенд-разработчика. В этой статье мы детально разберем каждое свойство Grid, от основополагающих до самых специфичных.

Структура грида напоминает обычный Excel-файл: есть горизонтальные и вертикальные линии, которые вместе образуют много разных ячеек. Только, в отличие от файла в Excel, внутри ячеек находятся не выгрузки по зарплате за март, а элементы сайта: текст, картинки, кнопки, блоки HTML-кода и так далее. А формально все эти части грид-разметки называются так:

grid-контейнер — самый главный элемент во всей разметке, в нём хранится всё содержимое сетки;

grid-ячейка — единица грид-сетки, сюда можно положить один или несколько блоков кода;

grid-линия — горизонтальная или вертикальная линия, разделяющая столбцы и колонки;

grid-строка (row) — ряд ячеек;

grid-столбец (column) — колонка ячеек;

grid-элемент — какой-либо элемент сайта;

grid-область (area) — пространство из ячеек, в CSS можно объединить несколько ячеек в одну и работать с ними как с единым целым.

Создание grid-контейнера: display: grid / inline-grid

Любая работа с Grid начинается с объявления контейнера. Это базовое свойство, которое преобразует любой HTML-элемент в grid-контейнер и активирует все нижеописанные возможности для его прямых потомков (grid-элементов).

grid
inline-grid
block
Создаёт блочный grid-контейнер. Такой контейнер, аналогично блочному элементу, по умолчанию занимает всю доступную ширину своего родителя, позволяя строить макеты всей страницы.
Создаёт строчный grid-контейнер. Ширина такого контейнера будет определяться его содержимым и общей структурой grid, а не шириной родителя. Это полезно для создания небольших сеточных компонентов внутри текстового потока или других блоков.
Значение block вставленно ради примера, что бы можно было посмотреть как распологались блоки до применения grid
1
2
3
4
5
.grid_container {
    display: grid;
}
.grid_element {
    margin: 5px;
}

Свойства для grig-контейнера

Эти свойства применяются к самому контейнеру и определяют общую архитектуру сетки: её размеры, выравнивание и алгоритм размещения элементов.

grid-template-columns

Свойство grid-template-columns - это свойство является фундаментальным для определения структуры сетки по вертикали. С его помощью вы явно задаёте количество, ширину и схему всех колонок (столбцов) в вашем grid-контейнере. Вы можете использовать фиксированные размеры, динамические единицы измерения и мощные функции CSS для создания гибких и сложных схем.

Фиксированные размеры (px): grid-template-columns: 200px 150px 300px; создаст три колонки с указанной шириной.

Динамические единицы (%): grid-template-columns: 20% 50% 30%; создаст колонки, общая ширина которых равна 100% ширины контейнера.

Единица fr (fraction - доля): это уникальная для Grid единица, которая распределяет свободное пространство пропорционально. Например, grid-template-columns: 1fr 3fr 1fr; создаст три колонки, где центральная будет в три раза шире боковых, независимо от размера контейнера.

Функция repeat(): позволяет сократить запись при создании повторяющихся шаблонов. grid-template-columns: repeat(4, 100px); эквивалентно 100px 100px 100px 100px;. Можно комбинировать: 1fr repeat(2, 200px) 1fr;.

Функция minmax(): задаёт диапазон допустимых размеров для трека. grid-template-columns: minmax(200px, 1fr) 2fr; означает, что первая колонка не может быть уже 200px, но может растягиваться на долю свободного пространства, в то время как вторая всегда будет в два раза шире оставшегося места.

Именование линий: мы можете давать имена сетевым линиям для более понятного позиционирования элементов в будущем: [main-start] 1fr [content-start] 2fr [content-end] 1fr [main-end].

grid-template-columns: ;
1
2
3
4
5
.grid_container {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
}
.grid_element {
    margin: 15px;
}

grid-template-rows

Свойство grid-template-rows - это свойство является прямой параллелью grid-template-columns, но отвечает за определение структуры сетки по горизонтали. Оно позволяет вам явно задать количество, высоту и схему всех строк в вашем grid-контейнере. В то время как ширина сетки часто является динамической, управление высотой строк с помощью этого свойства критически важно для создания макетов с предсказуемой вертикальной ритмикой.

Контроль высоты: grid-template-rows: 80px 1fr 120px; создаёт макет с фиксированным заголовком (80px), основным содержимым, занимающим всё оставшееся пространство (1fr), и фиксированным подвалом (120px). Это классическая схема "header-main-footer".

Использование fr и minmax(): grid-template-rows: minmax(100px, auto) 1fr; создаёт первую строку, высота которой будет не менее 100px, но может увеличиваться (auto), если контент требует этого, и вторую строку, занимающую всё оставшееся пространство.

Комбинация с repeat(): grid-template-rows: repeat(3, minmax(150px, auto)); создаёт три строки, каждая из которых имеет адаптивную высоту, подстраивающуюся под контент, но не менее 150px. Идеально для галерей или карточек товаров.

Важность контекста: Если суммарная высота всех строк, заданных через grid-template-rows, меньше высоты контейнера, свойство align-content определяет, как всё это пространство будет распределено.

grid-template-rows: ;
1
2
3
4
5
.grid_container {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    grid-template-rows: auto auto;
}
.grid_element {
    margin: 15px;
}

grid-template-areas

Свойство grid-template-areas - предоставляет уникальный, визуальный и семантически насыщенный способ описания макета страницы непосредственно в CSS. Вместо работы с абстрактными номерами линий вы "рисуете" схему вашего макета, присваивая каждому участку сетки осмысленное имя.

Объявление областей: Каждая строка в объявлении заключается в кавычки и представляет собой строку сетки.

Создание областей: Повторяющееся имя в пределах одной строки или across нескольких строк объединяет ячейки в одну именованную область. Например, "header header header" создаст область header, занимающую все три колонки в этой строке.

Пустые ячейки: Чтобы оставить ячейку пустой, используется точка (.) или последовательность точек. "sidebar . content" создаст строку с тремя колонками: sidebar, пустой ячейкой и content.

Связь с элементами: Чтобы поместить элемент в определённую область, ему задаётся свойство grid-area с соответствующим именем: .header { grid-area: header; }.

sidebar
header
content
footer
.grid_container {
    display: grid;
    grid-template-columns: 200px 1fr;
    grid-template-rows: 100px 250px 100px;
    grid-template-areas: 'sidebar header'
                        'sidebar content'
                        'sidebar footer';
}
.sidebar, .header, .content, .footer {
    margin: 15px;
}
.sidebar {
    grid-area: sidebar;
}
.header {
    grid-area: header;
}
.content {
    grid-area: content;
}
.footer {
    grid-area: footer;
}

grid-template

Свойство grid-template - это комплексное свойство-сокращение (shorthand) в CSS Grid Layout, которое позволяет одновременно задавать несколько параметров сетки в одной декларации. Оно объединяет в себе три фундаментальных свойства для определения явной сетки: grid-template-areas, grid-template-rows и grid-template-columns.

Свойство grid-template имеет несколько форм синтаксиса, каждая из которых предназначена для разных сценариев создания макета.

sidebar
header
content
footer
.grid_container {
    display: grid;
    grid-template: 'sidebar header' 100px
                'sidebar content' 250px
                'sidebar footer' 100px / 200px 1fr;
}
.sidebar, .header, .content, .footer {
    margin: 15px;
}
.sidebar {
    grid-area: sidebar;
}
.header {
    grid-area: header;
}
.content {
    grid-area: content;
}
.footer {
    grid-area: footer;
}

row-gap

Это свойство даёт точечный контроль именно над вертикальными промежутками между строками grid-сетки. Оно является составной частью свойства gap и должно использоваться, когда вам нужно независимо управлять только вертикальными отступами. Особенно полезно в сочетании с grid-auto-rows, где автоматически создаваемые строки также будут разделены этим промежутком.

row-gap: px;
1
2
3
4
5
.grid_container {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    row-gap: 0px;
}

column-gap

Это свойство является парным к row-gap и предоставляет точечный контроль именно над горизонтальными промежутками между колонками grid-сетки. Оно позволяет независимо от вертикальных отступов настроить "воздух" между элементами по горизонтали. Часто используется в карточных макетах или галереях для создания равномерных отступов между элементами в строке.

column-gap: px;
1
2
3
4
5
.grid_container {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    column-gap: 0px;
}

gap

Это свойство-сокращение (shorthand), которое одновременно задаёт расстояния между строками и колонками grid-сетки. Оно пришло на смену устаревшим grid-gap и является современным стандартом. gap создаёт визуальное разделение между ячейками, не затрагивая внешние отступы самого контейнера или внутренние отступы элементов.

Одно значение: gap: 20px; устанавливает и row-gap, и column-gap равными 20 пикселям.

Два значения: gap: 15px 30px; первое значение задаёт row-gap (вертикальные промежутки), второе — column-gap (горизонтальные промежутки).

Визуальный эффект: Эти промежутки ведут себя как "толстые" линии сетки: они добавляют пространство между ячейками, но не перед первой или после последней ячейки.

gap: pxpx;
1
2
3
4
5
.grid_container {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0px 0px;
}

grid-auto-flow

Свойство grid-auto-flow - управляет алгоритмом автоматического размещения элементов. Оно определяет, как браузер будет располагать grid-элементы, которые вы не разместили явно с помощью свойств вроде grid-column или grid-row.

dense - это ключевое слово можно добавлять к любому из основных значений (row dense или column dense). Оно включает "плотный" алгоритм заполнения. Если после размещения крупного элемента в потоке остаётся пустая ячейка, система проверит, не может ли один из следующих элементов (меньшего размера) занять эту ячейку, и, если может, поместит его туда, даже если это нарушит исходный порядок в HTML. Это мощный инструмент для ликвидации нежелательных "дыр" в макете.то ключевое слово можно добавлять к любому из основных значений (row dense или column dense). Оно включает "плотный" алгоритм заполнения. Если после размещения крупного элемента в потоке остаётся пустая ячейка, система проверит, не может ли один из следующих элементов (меньшего размера) занять эту ячейку, и, если может, поместит его туда, даже если это нарушит исходный порядок в HTML. Это мощный инструмент для ликвидации нежелательных "дыр" в макете.

row
row dense
column
column dense
Значение по умолчанию. Элементы размещаются построчно. Каждый новый элемент помещается в следующую доступную ячейку текущей строки. Когда строка заполнена, алгоритм переходит к следующей строке. Это интуитивно понятный режим для большинства макетов.
Одновременно применяет значения row и dense
Элементы размещаются по столбцам. Алгоритм заполняет каждый столбец сверху вниз, прежде чем перейти к следующему столбцу справа. Полезно для вертикально ориентированных списков.
Одновременно применяет значения column и dense
1
2
3
4
5
6
7
8
.grid_container {
    display: grid;
    gap: 30px;
    grid-template-columns: repeat(4, 1fr);
    grid-template-rows: repeat(2, auto);
    grid-auto-flow: row;
}
.grid_element:nth-child(4) {
    grid-column: span 2;
}

grid-auto-rows

Свойство grid-auto-rows - определяет размер неявно создаваемых строк. Неявные строки появляются, когда элементов больше, чем явно заданных строк, или когда элементы размещаются в строках, которых нет в явной сетке. Применение: grid-auto-rows: 80px; — самая частая практика, создающая ряды карточек или элементов списка одинаковой высоты. grid-auto-rows: minmax(100px, auto); — создаёт строки высотой не менее 100px, но способные растягиваться под контент. Идеально для динамического содержимого.

grid-auto-rows: ;
1
2
3
4
5
.grid_container {
    display: grid;
    gap: 30px;
    grid-template-columns: repeat(3, auto);
    grid-template-rows: 100px;
    grid-auto-rows: auto;
}

grid-auto-columns

Свойство grid-auto-columns - определяет размер неявно создаваемых колонок. Неявные колонки возникают тогда, когда grid-элементы размещаются за пределами явно заданной сетки (например, с помощью grid-column: 5; при наличии только 3 явных колонок) или когда алгоритм автоматического потока (grid-auto-flow: column) создаёт новые колонки для размещения элементов. Например: grid-auto-columns: 100px; означает, что любая автоматически созданная колонка будет иметь ширину 100 пикселей. Можно использовать minmax() для создания гибких автоматических треков: grid-auto-columns: minmax(150px, auto);.

grid-auto-columns: ;
1
2
3
4
5
.grid_container {
    display: grid;
    gap: 30px;
    grid-template-columns: repeat(2, 100px);
    grid-auto-flow: column;
    grid-auto-columns: auto;
}

justify-content

Это свойство выравнивает всю сетку целиком внутри её контейнера по горизонтальной (inline) оси. Оно вступает в силу только тогда, когда общий размер всех колонок сетки (явно заданных через grid-template-columns) меньше, чем ширина самого grid-контейнера. Таким образом, justify-content работает с избыточным пространством по ширине.

stretch
start
end
center
space-between
space-around
space-evenly
Значение по умолчанию. Растягивает колонки так, чтобы сетка заполнила всю ширину контейнера
Прижимает всю сетку к началу контейнера (левому краю)
Прижимает всю сетку к концу контейнера (правому краю)
Центрирует всю сетку по горизонтали внутри контейнераа
Равномерно распределяет все колонки по ширине grig-контейнера. Первая колонка прижата к началу, последняя — к концу, а доступное пространство равномерно распределено между колонками.
Равномерно распределяет все колонки по ширине grig-контейнера. Равномерно распределяет избыточное пространство вокруг колонок (пространство между соседними колонками равно, а по краям — половине этого значения).
Равномерно распределяет все колонки по ширине grig-контейнера. Пространство распределяется равномерно вокруг всех колонок, включая крайние участки.
1
2
3
4
5
6
.grid_container {
    display: grid;
    gap: 30px;
    grid-template-columns: repeat(3, auto);
    justify-content: stretch;
}

justify-items

Свойство justify-items - устанавливает выравнивание по умолчанию для всех grid-элементов по горизонтали внутри их индивидуальных, отведённых им ячеек. Оно задаёт глобальное поведение для контейнера, определяя, как каждый его дочерний элемент будет позиционирован в своей ячейке по оси X.

stretch
start
end
center
Значение по умолчанию. Элемент растягивается, чтобы заполнить всю ширину своей ячейки. Это самое часто используемое поведение.
Элемент прижимается к левому краю своей ячейки (для LTR-языков). Его ширина определяется его содержимым.
Элемент прижимается к правому краю своей ячейки.
Элемент центрируется по горизонтали внутри своей ячейки.
1
2
3
4
5
6
.grid_container {
    display: grid;
    gap: 30px;
    grid-template-columns: repeat(3, auto);
    justify-items: stretch;
}

align-content

Это свойство является аналогом justify-content, но выравнивает всю сетку целиком внутри её контейнера по вертикальной (block) оси. Оно активируется, когда общая высота всех строк сетки (явно заданных через grid-template-rows) меньше, чем высота самого grid-контейнера. align-content управляет избыточным пространством по высоте.

stretch
start
end
center
space-between
space-around
space-evenly
normal
Значение по умолчанию. Растягивает строки так, чтобы сетка заполнила всю высоту контейнера (если размеры строк заданы в гибких единицах).
Прижимает всю сетку к верхнему краю контейнера.
Прижимает всю сетку к нижнему краю контейнера.
Центрирует всю сетку по вертикали внутри контейнера.
Равномерно распределяет все строки по высоте grig-контейнера. Первая строка прижата к верху, последняя — к низу, а доступное пространство равномерно распределено между строками.
Равномерно распределяет все строки по высоте grig-контейнера. Равномерно распределяет избыточное пространство вокруг строк.
Равномерно распределяет все строки по высоте grig-контейнера. Пространство распределяется равномерно вокруг всех строк.
Используется для задания выравнивания содержимого сетки, то есть для распределения пространства между строками или столбцами сетки по поперечной оси. Основная идея normal заключается в том, чтобы браузер сам определял наилучший способ выравнивания, учитывая общие принципы и особенности применяемой модели раскладки.
1
2
3
4
5
6
.grid_container {
    height: 350px;
    display: grid;
    gap: 30px;
    grid-template-columns: repeat(3, auto);
    align-content: stretch;
}

align-items

Это свойство устанавливает выравнивание по умолчанию для всех grid-элементов по вертикали внутри их индивидуальных ячеек. Оно является парным к justify-items и управляет выравниванием по оси Y для всех элементов контейнера.

stretch
start
end
center
Значение по умолчанию. Элемент растягивается, чтобы заполнить всю высоту своей ячейки.
Элемент прижимается к верхнему краю своей ячейки. Его высота определяется содержимым.
Элемент прижимается к нижнему краю своей ячейки.
Элемент центрируется по вертикали внутри своей ячейки.
1
2
3
4
5
6
.grid_container {
    display: grid;
    gap: 30px;
    grid-template-columns: repeat(3, auto);
    grid-template-rows: repeat(2, 150px);
    align-items: stretch;
}

grid

Свойство grid - это "король" свойств-сокращений в Grid. Оно позволяет в одной лаконичной декларации задать подавляющее большинство параметров контейнера. Из-за своей мощи оно имеет несколько форм синтаксиса, что может быть сложным для новичков, но невероятно эффективно для опытных разработчиков.

grid: ;
1
2
3
4
5
.grid_container {
    display: grid;
    gap: 30px;
    grid: 100px auto / repeat(3, 1fr);
}

Свойства для grid-элементов

order

Это свойство определяет порядок отображения элемента внутри grid-контейнера в контексте автоматического размещения. Все элементы по умолчанию имеют order: 0. Элементы располагаются в порядке возрастания значения order; элементы с одинаковым значением order располагаются в порядке их следования в исходном HTML-коде.

Влияние: order влияет только на визуальный порядок при автоматическом размещении. Для элементов, позиционированных явно (с помощью grid-column/grid-row), это свойство не изменит их позицию в сетке, но может повлиять на порядок наложения (z-index), если элементы занимают одни и те же ячейки.

Доступность: Следует использовать с осторожностью, так как изменение визуального порядка может нарушить логическую последовательность контента для пользователей скринридеров и клавиатурной навигации.

order: ;
1
2
3
4
5
.grid_container {
    display: grid;
    gap: 30px;
    grid-template-columns: repeat(3, 1fr);
}
.grid_element:nth-child(1) { order: 1; }
.grid_element:nth-child(2) { order: 2; }
.grid_element:nth-child(3) { order: 3; }
.grid_element:nth-child(4) { order: 4; }
.grid_element:nth-child(5) { order: 5; }

align-self

Свойство align-self - это свойство является парным к justify-self и позволяет переопределить выравнивание по умолчанию, установленное в align-items, для одного конкретного элемента. Оно управляет выравниванием элемента по вертикали внутри его собственной ячейки.

Когда использовать: Если у вас в контейнере все элементы растянуты на всю высоту ячейки (align-items: stretch;), но для одного элемента вы хотите отключить растягивание и центрировать его по вертикали, вы примените к нему align-self.

stretch
start
end
center
Значение по умолчанию. Равномерно распределяет gridэлемент по высоте grig-ячейки
Grig-элемент стартуют с начала (верхнего края)
Grig-элемент стартуют с конца (нижнего края)
Grig-элемент становятся по центру. Элемент не должны занимать всю высоту контейнера
Lorem ipsum dolor sit amet consectetur adipisicing elit
Lorem ipsum dolor sit amet consectetur
Lorem ipsum dolor
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nobis, nihil quas repellendus
.flex_container {
    display: flex;
    gap: 30px;
    grid-template-columns: repeat(4, 1fr);
}
.grid_element:nth-child(3) {
    align-self: stretch;
}

justify-self

Свойство justify-self - позволяет переопределить выравнивание по умолчанию, установленное для контейнера в justify-items, но только для одного конкретного элемента. Оно управляет выравниванием элемента по горизонтали внутри его собственной ячейки.

Когда использовать: Представьте, что все элементы в контейнере выровнены по умолчанию по левому краю (justify-items: start;), но одну конкретную кнопку вы хотите визуально выделить, выровняв её по правому краю её ячейки. Для этого вы примените к ней justify-self: end;.

stretch
start
end
center
Значение по умолчанию. Грид-элемент заполняют всё доступное пространство грид-ячейки
Позиционирует грид-элемент по левому краю. При этом ширина грид-элемента становится равной относительной ширине содержимого контента
Позиционирует грид-элемент по правому краю. При этом ширина грид-элемента становится равной относительной ширине содержимого контента
Позиционирует грид-элемент по центру. При этом ширина грид-элемента становится равной относительной ширине содержимого контента
1
2
3
4
.flex_container {
    display: flex;
    gap: 30px;
    grid-template-columns: repeat(4, 1fr);
}
.grid_element:nth-child(3) {
    justify-self: stretch;
}

grid-area

grid-area - это многофункциональное свойство, которое является самым мощным инструментом позиционирования для grid-элемента. Оно может использоваться в двух ключевых ролях.

Роль 1: Универсальное сокращение для позиционирования

Синтаксис: grid-area: <row-start> / <column-start> / <row-end> / <column-end>;

Пример: grid-area: 2 / 1 / 4 / 3; — элемент будет расположен между 2-й и 4-й строками и между 1-й и 3-й колонками.

Роль 2: Привязка к именованной области.

Если вы определили именованные области в контейнере с помощью grid-template-areas, это свойство помещает элемент в указанную область.

Синтаксис: grid-area: <area-name>;

Пример: grid-area: sidebar; — элемент займёт всю область с именем "sidebar".

sidebar
header
content
footer
.grid_container {
    display: grid;
    grid-template-columns: 200px 1fr;
    grid-template-rows: 100px 250px 100px;
    grid-template-areas: 'sidebar header'
                        'sidebar content'
                        'sidebar footer';
}
.sidebar, .header, .content, .footer {
    margin: 15px;
}
.sidebar {
    grid-area: sidebar;
}
.header {
    grid-area: header;
}
.content {
    grid-area: content;
}
.footer {
    grid-area: footer;
}

grid-column-start

Свойство grid-column-start - определяет местоположение grid-элемента в сетке ссылаясь на конкретные колонки. Это свойство задаёт начальную вертикальную линию сетки, с которой начинается элемент. Оно "зацепляет" элемент за конкретную линию, определяя, в какой колонке он начнёт своё размещение.

Способы указания линии:

По номеру: grid-column-start: 2; — элемент начнётся со 2-й вертикальной линии (фактически, разместится во 2-й колонке, если считать линии слева направо, начиная с 1).

По имени: Если вы именовали линии в grid-template-columns, можно использовать имя: grid-column-start: sidebar-start;.

Ключевое слово span: grid-column-start: span 2; — элемент начнётся с текущей позиции в потоке и будет "растягиваться" вперёд, охватывая 2 колонки. Сама стартовая позиция при этом вычисляется автоматически.

Отрицательная нумерация: grid-column-start: -2; — элемент начнётся со 2-й линии с конца сетки.

.grid_element {
    grid-column-start: 1;
}

grid-column-end

Свойство grid-column-end - определяет местоположение grid-элемента в сетке ссылаясь на конкретные колонки. Это свойство задаёт конечную вертикальную линию сетки, на которой заканчивается элемент. Оно определяет правую границу элемента.

Способы указания линии:

По номеру: grid-column-end: 4; — элемент закончится на 4-й вертикальной линии.

Ключевое слово span: grid-column-end: span 3; — элемент закончится через 3 колонки от своей начальной позиции, заданной в grid-column-start.

Важность комбинации: Сочетание grid-column-start: 2; и grid-column-end: 4; разместит элемент между 2-й и 4-й линиями, то есть он займёт 2-ю и 3-ю колонки.

.grid_element {
    grid-column-end: 2;
}

grid-column

grid-column - универсальное свойство, которое позволяет одновременно задать значения двух свойств: grid-row-start и grid-row-end. Оно делает код чище и легче для чтения.

grid-column: /;
1
2
3
4
5
.grid_container {
    display: grid;
    gap: 30px;
    grid-template-columns: repeat(5, 1fr);
}
.grid_element:nth-child(2) { 
    grid-column: 2 / 2;
}

grid-row-start

Свойство grid-row-start - определяет местоположение grid-элемента в сетке ссылаясь на конкретные линии. Это свойство задаёт начальную горизонтальную линию сетки, с которой начинается элемент. Оно определяет, в какой строке элемент начнёт своё размещение.

Принцип работы: Аналогичен grid-column-start, но работает с горизонтальными линиями (строками). Пример: grid-row-start: 3; — элемент начнёт размещение с 3-й горизонтальной линии.

.grid_element {
    grid-row-start: 1;
}

grid-row-end

Определяет местоположение grid-элемента в сетке ссылаясь на конкретные линии. grid-row-end - определяет номер строки на которой grid-элемент заканчивается

Свойство grid-row-end - определяет местоположение grid-элемента в сетке ссылаясь на конкретные линии. Это свойство задаёт конечную горизонтальную линию сетки, на которой заканчивается элемент. Оно определяет нижнюю границу элемента.

Принцип работы: Аналогичен grid-column-end, но для строк. Пример: Комбинация grid-row-start: 1; grid-row-end: 3; разместит элемент между 1-й и 3-й горизонтальными линиями, то есть он займёт 1-ю и 2-ю строки.

.grid_element {
    grid-row-end: 2;
}

grid-row

Универсальное свойство, которое позволяет одновременно задать значения двух свойств grid-row-start и grid-row-end. Работает по тому же принципу, что и grid-column, но для управления строками.

grid-row: /;
1
2
3
4
5
6
7
8
9
10
11
12
.grid_container {
    display: grid;
    gap: 30px;
    grid-template-columns: repeat(4, 1fr);
}
.grid_element:nth-child(1) { 
    grid-row: 1 / 2;
}

CSS Grid Layout — это не просто набор свойств, а целая философия вёрстки, предоставляющая разработчику беспрецедентный контроль над макетом. Детальное понимание каждого свойства, от глобальных настроек контейнера до точечного управления элементами, открывает путь к созданию сложных, отзывчивых и визуально привлекательных интерфейсов. Комбинируя мощь Grid для построения общего каркаса страницы с гибкостью Flexbox для выравнивания содержимого внутри блоков, вы сможете реализовать любой, даже самый амбициозный дизайн-проект с чистым, поддерживаемым и семантически верным кодом.