
CSS Grid позволяет строить сложные макеты страниц, разделяя пространство на строки и колонки. Для управления этим пространством используются свойства контейнера, которые задают размеры, выравнивание и промежутки между элементами.
display: grid и display: inline-grid превращают элемент в grid-контейнер. После этого можно использовать grid-template-columns и grid-template-rows для точного задания структуры колонок и строк, включая фиксированные, гибкие и пропорциональные размеры.
С помощью gap, row-gap и column-gap можно устанавливать расстояние между элементами без дополнительного использования margin. Для выравнивания элементов внутри контейнера применяются justify-items и align-items, а для распределения пустого пространства между рядами и колонками – justify-content и align-content.
Практическое использование этих свойств позволяет создавать адаптивные сетки, где элементы занимают нужное место и корректно реагируют на изменение размеров экрана. В статье представлены полный список свойств grid-контейнера с примерами их применения на практике.
Свойства CSS Grid контейнера: полный список и примеры

display определяет элемент как grid-контейнер. Значения grid и inline-grid включают сетку и задают, будет ли контейнер блочным или строчным.
grid-template-columns и grid-template-rows задают точное количество колонок и строк с указанием размеров. Можно использовать пиксели, проценты, fr-единицы и minmax(), что позволяет строить адаптивные макеты.
gap, row-gap и column-gap устанавливают промежутки между элементами без использования внешних отступов. Пример: gap: 20px 15px; создаст вертикальный и горизонтальный отступ.
justify-items и align-items управляют выравниванием элементов внутри ячеек по горизонтали и вертикали. Значения start, end, center, stretch позволяют точно контролировать позицию контента.
justify-content и align-content распределяют пустое пространство между строками и колонками сетки. Опции space-between, space-around и space-evenly создают равномерное распределение элементов внутри контейнера.
grid-auto-flow определяет порядок автоматического размещения элементов: по строкам (row), по колонкам (column) или с плотной компоновкой (dense), что помогает заполнять пустые места в сетке.
Как задать grid-контейнер с помощью display
Свойство display превращает любой блок в grid-контейнер. Основные значения для сетки: grid и inline-grid. grid создаёт блочный контейнер, а inline-grid сохраняет строчное поведение элемента.
Пример использования:
| Свойство | Значение | Описание |
|---|---|---|
| display | grid | Создаёт блочный grid-контейнер, элементы располагаются по строкам и колонкам. |
| display | inline-grid | Контейнер ведёт себя как строчный элемент, при этом сохраняется структура сетки. |
После задания display: grid автоматически активируются свойства контейнера: grid-template-columns, grid-template-rows, gap, justify-items и align-items. Это позволяет сразу строить структуру сетки без дополнительных обёрток и настроек.
Управление количеством и размерами колонок через grid-template-columns

Свойство grid-template-columns определяет число колонок в grid-контейнере и их размеры. Можно задавать фиксированные значения в пикселях, процентах, фракциях (fr) или комбинировать их с функцией minmax() для адаптивных макетов.
Пример фиксированной сетки:
grid-template-columns: 200px 300px 200px; – создаёт три колонки с точными размерами.
Пример гибкой сетки:
grid-template-columns: 1fr 2fr 1fr; – ширина колонок пропорциональна указанным долям.
Использование repeat() упрощает повторяющиеся значения: grid-template-columns: repeat(4, 1fr); создаст четыре одинаковые колонки.
Функция minmax() позволяет задавать диапазон размеров: grid-template-columns: repeat(3, minmax(150px, 1fr)); – колонки будут не меньше 150px и адаптироваться к доступному пространству.
Правильное комбинирование единиц и функций позволяет строить сетки, которые сохраняют читаемость и адаптивность при изменении размеров экрана.
Настройка строк с grid-template-rows и их примеры
Свойство grid-template-rows задаёт количество строк в grid-контейнере и их размеры. Значения могут быть фиксированными в пикселях, процентами, фракциями (fr) или комбинированными через minmax().
Пример фиксированных строк:
grid-template-rows: 100px 200px 150px; – создаёт три строки с точной высотой.
Пример гибкой высоты:
grid-template-rows: 1fr 2fr 1fr; – высота строк распределяется пропорционально указанным долям.
Использование repeat() упрощает повторяющиеся строки: grid-template-rows: repeat(4, 50px); создаст четыре строки по 50px.
Функция minmax() позволяет задать диапазон высоты: grid-template-rows: minmax(100px, auto) 2fr; – первая строка будет не меньше 100px и может увеличиваться, вторая адаптируется по доступному пространству.
Правильная настройка grid-template-rows обеспечивает удобное управление вертикальной структурой сетки и адаптацию контента при изменении размеров контейнера.
Определение промежутков между элементами с gap, row-gap и column-gap
Свойства gap, row-gap и column-gap позволяют задавать расстояние между элементами сетки без применения внешних отступов. Они повышают точность компоновки и упрощают поддержку макета.
Основные особенности:
- gap задаёт одновременно вертикальные и горизонтальные промежутки: gap: 20px 15px; – 20px по вертикали, 15px по горизонтали.
- row-gap управляет только вертикальным расстоянием между строками.
- column-gap устанавливает горизонтальные промежутки между колонками.
Примеры использования:
- gap: 10px; – одинаковый отступ между всеми элементами.
- row-gap: 15px; column-gap: 25px; – независимое управление вертикальными и горизонтальными промежутками.
- gap: 2em 1fr; – комбинированные единицы для адаптивной сетки.
Использование этих свойств упрощает адаптацию сетки под разные размеры экрана и исключает необходимость вручную корректировать margin у дочерних элементов.
Выравнивание элементов внутри контейнера с justify-items и align-items

Свойства justify-items и align-items управляют выравниванием элементов внутри отдельных ячеек сетки. justify-items контролирует горизонтальное положение, а align-items – вертикальное.
Основные значения:
- start – элементы прижаты к началу строки или колонки.
- end – элементы прижаты к концу строки или колонки.
- center – элементы центрированы в ячейке.
- stretch – элементы растягиваются на всю доступную ширину или высоту ячейки.
Примеры применения:
- justify-items: center; align-items: center; – элементы центрируются горизонтально и вертикально.
- justify-items: stretch; align-items: start; – элементы растягиваются по ширине и прижаты к верхнему краю ячейки.
- justify-items: end; align-items: end; – элементы прижаты к правому нижнему углу ячейки.
Правильное использование этих свойств обеспечивает точное размещение контента внутри сетки без дополнительного задания margin у дочерних элементов.
Настройка распределения пространства между строками и колонками с justify-content и align-content

Свойства justify-content и align-content управляют распределением пустого пространства внутри grid-контейнера. justify-content действует по горизонтали, а align-content – по вертикали.
Доступные значения:
- start – элементы прижаты к началу контейнера.
- end – элементы прижаты к концу контейнера.
- center – элементы центрированы внутри контейнера.
- space-between – равномерное распределение элементов с отсутствием отступов на краях.
- space-around – равные промежутки вокруг каждого элемента.
- space-evenly – равномерные промежутки между элементами и краями контейнера.
Примеры использования:
- justify-content: space-between; align-content: center; – строки растягиваются по горизонтали с равными промежутками, вертикально центрированы.
- justify-content: center; align-content: space-around; – колонки центрированы, строки распределены с равными промежутками вокруг.
- justify-content: start; align-content: end; – элементы прижаты к левому краю и нижнему краю контейнера.
Эти свойства позволяют управлять визуальным распределением сетки при наличии свободного пространства, улучшая читаемость и согласованность макета.
Вопрос-ответ:
Как задать элемент как grid-контейнер и чем отличается display: grid от inline-grid?
Чтобы превратить элемент в grid-контейнер, используется свойство display с значением grid или inline-grid. grid создаёт блочный контейнер, который занимает всю ширину родителя, а inline-grid ведёт себя как строчный элемент, сохраняя ширину по контенту и позволяя сетке вписываться в текстовый поток.
Как управлять количеством и размерами колонок в CSS Grid?
Свойство grid-template-columns определяет число колонок и их размеры. Можно использовать фиксированные значения в пикселях, проценты, доли пространства с fr или функции minmax() для адаптивных сеток. Например, grid-template-columns: 1fr 2fr 1fr; создаёт три колонки с пропорцией ширины 1:2:1, а grid-template-columns: repeat(4, 100px); задаёт четыре одинаковые колонки по 100px.
В чём разница между justify-items и justify-content в grid-контейнере?
justify-items управляет выравниванием элементов внутри каждой ячейки по горизонтали, а justify-content распределяет свободное пространство между колонками в контейнере. Например, при justify-items: center; контент каждой ячейки центрируется, а justify-content: space-between; создаёт равные промежутки между колонками всего контейнера.
Как правильно использовать gap, row-gap и column-gap для промежутков между элементами?
Свойство gap задаёт одновременно вертикальные и горизонтальные промежутки между элементами: gap: 20px 15px;. Если нужно разделить управление, используются row-gap для вертикальных промежутков и column-gap для горизонтальных. Эти свойства упрощают структуру сетки, избегая использования внешних отступов у дочерних элементов.
