Перейти к основному содержимому

Треки CSS Grid (строки и столбцы)

Grid-контейнер определяет, сколько у него столбцов и строк и какого они размера.

Этим управляют три свойства:

  • grid-template-columns — сколько столбцов в сетке и какой они ширины.
  • grid-template-rows — сколько строк в сетке и какой они высоты.
  • grid-template-areas — располагает столбцы и строки с помощью именованных элементов сетки.

Свойство CSS grid-template-columns

Количество и ширину столбцов задаёт grid-template-columns.

Вы передаёте ему список, разделённый пробелами, с одним значением на столбец, и это значение становится шириной столбца.

Типичные варианты включают:

  • Фиксированные длины, например 100px 300px 200px
  • Проценты, например 20% 60% 20%
  • Единицу fr, например 1fr 2fr 1fr
  • auto, например auto auto auto
  • repeat(), например repeat(3, 1fr)
  • minmax(), например minmax(80px, 1fr) 150px 150px

CSS grid-template-columns: значение auto

Если написать ключевое слово auto три раза, получится сеточная раскладка с 3 столбцами. При содержимом близкого размера, как здесь, столбцы получаются одинаковой ширины.

Пример

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

Prompt
Создайте контейнер CSS grid с 3 столбцами одинаковой ширины, используя grid-template-columns: auto auto auto. Разместите 6 пронумерованных элементов внутри сетки.
Результат: полная HTML-страница

Столбцы сетки со смешанной шириной

Столбцы не обязаны быть одного размера. Вы можете, например, зафиксировать ширину 2 столбцов и оставить 1 с размером auto.

Пример

Здесь ширина столбца 1 равна 80px, столбца 2 — 200px, а столбец 3 имеет размер auto.

Prompt
Создайте контейнер CSS grid с 3 столбцами, где первый столбец шириной 80px, второй — 200px, а третий использует auto. Разместите 6 пронумерованных элементов внутри.
Результат: полная HTML-страница

Столбцы сетки с единицей fr

Единица fr, сокращение от «fraction» (доля), автоматически делит доступное пространство на равные части, называемые долями.

Так, 1fr занимает 1 долю этого пространства, а 2fr занимает 2.

Равные столбцы

Ширина контейнера делится поровну, и каждый столбец получает 33.3%.

Prompt
Создайте контейнер CSS grid с 3 равными столбцами, используя единицу fr (1fr 1fr 1fr). Разместите 6 пронумерованных элементов внутри сетки.
Результат: полная HTML-страница

Неравные столбцы

По сравнению с остальными второй столбец вдвое шире.

Prompt
Создайте контейнер CSS grid с 3 столбцами, используя единицу fr, где второй столбец в два раза шире остальных (1fr 2fr 1fr). Разместите 6 пронумерованных элементов внутри.
Результат: полная HTML-страница

Столбцы сетки с функцией repeat()

Сетка может многократно использовать группу столбцов или строк с помощью функции repeat().

Пример

Три столбца одинаковой ширины, записанные с помощью repeat().

Prompt
Создайте контейнер CSS grid с 3 столбцами одинаковой ширины, используя функцию repeat() (repeat(3, 1fr)). Разместите 6 пронумерованных элементов внутри.
Результат: полная HTML-страница

Столбцы сетки с функцией minmax()

Диапазон размеров с минимальным и максимальным значением задаёт функция minmax(): размер никогда не бывает меньше первого и больше второго.

Пример

Первый столбец никогда не бывает уже 80px и может расти до 1fr.

Prompt
Создайте контейнер CSS grid с 3 столбцами, используя minmax(80px, 1fr) 150px 150px для grid-template-columns. Разместите 6 пронумерованных элементов внутри.
Результат: полная HTML-страница

Свойство CSS grid-template-rows

Количество и высоту строк задаёт grid-template-rows.

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

Типичные варианты включают фиксированные длины, проценты, единицу fr, auto, min-content, max-content, repeat(), minmax() и fit-content().

Пример

Первая строка получает высоту 80px, а вторая — 200px. Строки после этих двух по умолчанию используют auto.

Prompt
Создайте контейнер CSS grid с 3 столбцами (auto) и используйте grid-template-rows: 80px 200px, чтобы задать высоту первой строки 80px, а второй — 200px. Разместите 8 пронумерованных элементов внутри.
Результат: полная HTML-страница