Макет CSS Grid

Сетка — это набор пересекающихся горизонтальных и вертикальных линий, которые определяют столбцы и строки сетки.

CSS предоставляет систему макетирования на основе сетки со строками и столбцами, что упрощает проектирование веб-страниц без необходимости использовать float и позиционирование.

Ниже представлен простой макет веб-страницы, использующий grid-раскладку и содержащий шесть столбцов и три строки:

Попробуйте сами »


Поддержка браузеров

В настоящее время все последние версии браузеров поддерживают grid-раскладку.

57.0 16.0 52.0 10 44

Элемент сетки

Grid-раскладка состоит из родительского элемента и одного или нескольких дочерних элементов.

Пример

<div class="grid-container"> <div class="grid-item">1</div> <div class="grid-item">2</div> <div class="grid-item">3</div> <div class="grid-item">4</div> <div class="grid-item">5</div> <div class="grid-item">6</div> <div class="grid-item">7</div> <div class="grid-item">8</div> <div class="grid-item">9</div> </div>

Попробуйте сами »

свойство display

Когда HTML-элемент задаёт для свойства display значение grid или inline-grid, он становится grid-контейнером, а все его прямые дочерние элементы становятся grid-элементами.

Пример

.grid-container { display: grid; }

Попробуйте сами »

Пример

.grid-container { display: inline-grid; }

Попробуйте сами »

Трек сетки

Мы используемgrid-template-columnsиgrid-template-rowsсвойства для определения столбцов и строк в сетке.

Эти свойства определяют треки сетки. Трек сетки — это пространство между любыми двумя линиями в сетке.

На изображении ниже вы можете увидеть трек с зелёным блоком — первый трек строки сетки. Вторая строка содержит три белых трека-блока.

В следующем примере мы используемgrid-template-columnsСвойство создаёт четыре столбца в контейнере сетки:

Пример

.grid-container { display: grid; grid-template-columns: auto auto auto auto; }

Попробуйте сами »

В следующем примере мы используемgrid-template-rowsСвойство задаёт высоту строк в контейнере сетки:

Пример

.grid-container { display: grid; grid-template-rows: 100px 300px; }

Попробуйте сами »

Единица fr

Треки можно задавать с использованием любой единицы длины.

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

В следующем примере определяется сетка, которая создаст три трека равной ширины, растущих и сжимающихся в зависимости от доступного пространства.

Пример

.grid-container { display: grid; grid-template-columns: 1fr 1fr 1fr; }

Попробуйте сами »

Ячейка сетки

Ячейка сетки — это наименьшая единица внутри элемента сетки, концептуально похожая на ячейку в таблице. Теперь, возвращаясь к нашему предыдущему примеру, после того как элемент сетки определён внутри родительского элемента, его дочерние элементы будут располагаться в каждой предопределённой ячейке сетки. На изображении ниже я отмечу первую ячейку сетки.

Область сетки

Элементы сетки могут занимать одну или несколько ячеек в направлении строки или столбца и создавать область сетки. Форма области сетки должна быть прямоугольной — то есть нельзя создать область сетки в форме буквы "L". Выделенная область сетки на изображении ниже охватывает 2 столбца и 2 строки.


столбцы сетки

Вертикальное направление элементов сетки называется столбцом.


строка сетки

Горизонтальное направление элементов сетки называется строкой.


Промежуток сетки

Промежуток сетки (промежуток столбца) — это горизонтальное или вертикальное расстояние между двумя ячейками сетки.

Для настройки размера промежутка можно использовать следующие свойства:

  • grid-column-gap
  • grid-row-gap
  • grid-gap

В следующем примере используется свойствоgrid-column-gapдля установки промежутка сетки между столбцами:

Пример

.grid-container { display: grid; grid-column-gap: 50px; }

Попробуйте сами »

В следующем примере используется свойствоgrid-row-gapдля установки промежутка сетки между строками:

Пример

.grid-container { display: grid; grid-row-gap: 50px; }

Попробуйте сами »

grid-gapСвойство является сокращением для свойств `grid-row-gap` и `grid-column-gap`:

Пример

.grid-container { display: grid; grid-gap: 50px 100px; }

Попробуйте сами »

grid-gapСвойство может задавать как промежуток между строками, так и промежуток между столбцами:

Пример

.grid-container { display: grid; grid-gap: 50px; }

Попробуйте сами »

линия сетки

Пересечения между столбцами и между строками называются линиями сетки.

Grid создаёт пронумерованные линии сетки, чтобы мы могли позиционировать каждый элемент сетки.

Например, в приведённой ниже сетке с тремя столбцами и двумя строками есть четыре вертикальные линии сетки (отмеченные серыми кружками) и три горизонтальные линии сетки (отмеченные чёрными кружками).

Элементы сетки могут ссылаться на эти номера линий при позиционировании.

На изображении ниже заданы четыре вертикальные линии сетки и четыре горизонтальные линии сетки:

Порядок нумерации линий сетки зависит от режима письма документа. В языках, в которых письмо идёт слева направо, линия сетки номер 1 находится у самого левого края. В языках, в которых письмо идёт справа налево, линия сетки номер 1 находится у самого правого края.

Затем я использовал свойства `grid-column-start`, `grid-column-end`, `grid-row-start` и `grid-row-end`, чтобы продемонстрировать, как использовать линии сетки.

В следующем примере мы задаём линии сетки элемента сетки так, чтобы они начинались с первого столбца и заканчивались на третьем столбце:

Пример

.item1 { grid-column-start: 1; grid-column-end: 3; }

Попробуйте сами »

В следующем примере мы задаём линии сетки элемента сетки так, чтобы они начинались с первой строки и заканчивались на третьей строке:

Пример

.item1 { grid-row-start: 1; grid-row-end: 3; }

Попробуйте сами »

Свойства CSS Grid

Свойство Описание
column-gap Задаёт промежуток между столбцами
gap row-gapиcolumn-gapСокращённое свойство для
grid grid-template-rows, grid-template-columns, grid-template-areas, grid-auto-rows, grid-auto-columns, иgrid-auto-flowСокращённое свойство для
grid-area Укажите имя элемента сетки, или это может бытьgrid-row-start, grid-column-start, grid-row-end, иgrid-column-endСокращённое свойство для
grid-auto-columns Задаёт размер столбца по умолчанию
grid-auto-flow Указывает, как работает алгоритм автоматического размещения, точно определяя, как располагаются элементы, автоматически размещённые в сетке.
grid-auto-rows Задаёт размер строки по умолчанию
grid-column grid-column-startиgrid-column-endСокращённое свойство для
grid-column-end Задаёт конечную позицию столбца grid-элемента
grid-column-gap Задаёт размер промежутка grid-элемента
grid-column-start Задаёт начальную позицию столбца grid-элемента
grid-gap grid-row-gapиgrid-column-gapСокращённое свойство для
grid-row grid-row-startиgrid-row-endСокращённое свойство для
grid-row-end Задаёт конечную позицию строки grid-элемента
grid-row-gap Задаёт промежуток между строками grid-элемента
grid-row-start Указывает начальную позицию строки элемента сетки
grid-template grid-template-rows, grid-template-columnsиgrid-areasСокращённое свойство для
grid-template-areas Указывает, как отображаются строки и столбцы, с использованием именованных элементов сетки.
grid-template-columns Указывает размер столбцов, а также количество столбцов, заданных в макете сетки.
grid-template-rows Указывает размер строк в макете сетки
row-gap Указывает промежуток между двумя строками

Далее мы можем использоватьCSS Grid Layout Mini-Game, чтобы проверить то, что мы изучили.

Другие расширения