Spec-Zone.ru › CSS

grid-template-columns

Базовая Широко доступная

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с октября 2017 года.

  • Узнать больше
  • См. полную совместимость
  • Отправить отзыв

Свойство grid-template-columns CSS определяет имена линий и функции задания размеров полос столбцов сетки.

Попробовать

Синтаксис

/* Keyword value */
grid-template-columns: none;

/* <track-list> values */
grid-template-columns: 100px 1fr;
grid-template-columns: [line-name] 100px;
grid-template-columns: [line-name1] 100px [line-name2 line-name3];
grid-template-columns: minmax(100px, 1fr);
grid-template-columns: fit-content(40%);
grid-template-columns: repeat(3, 200px);
grid-template-columns: subgrid;
grid-template-columns: masonry;

/* <auto-track-list> values */
grid-template-columns: 200px repeat(auto-fill, 100px) 300px;
grid-template-columns:
  minmax(100px, max-content)
  repeat(auto-fill, 200px) 20%;
grid-template-columns:
  [line-name1] 100px [line-name2]
  repeat(auto-fit, [line-name3 line-name4] 300px)
  100px;
grid-template-columns:
  [line-name1 line-name2] 100px
  repeat(auto-fit, [line-name1] 300px) [line-name3];

/* Global values */
grid-template-columns: inherit;
grid-template-columns: initial;
grid-template-columns: revert;
grid-template-columns: revert-layer;
grid-template-columns: unset;

Значения

none

Указывает, что явная сетка отсутствует. Любые столбцы будут неявно сгенерированы, а их размер будет определен свойством grid-auto-columns.

[line-name]

<custom-ident>, определяющий имя линии в данном месте. Идентификатор может быть любой допустимой строкой, кроме зарезервированных слов span и auto. Линии могут иметь несколько имён, разделённых пробелом внутри квадратных скобок, например [line-name-a line-name-b].

<length>

Положительная длина, задающая ширину столбца.

<percentage>

Это положительное значение <percentage>, относительное к размеру контейнера сетки по горизонтали. Если размер контейнера сетки зависит от размера его полос, то процент должен рассматриваться как auto. Вклад внутренней величины полосы может быть скорректирован для размера контейнера сетки, увеличивая конечный размер полосы на минимальное количество, которое приведет к соблюдению процента.

<flex>

Это положительная величина с единицей fr, определяющая коэффициент гибкости полосы. Каждая полоса размера <flex> занимает долю оставшегося пространства пропорционально своему коэффициенту гибкости.

Когда оно появляется вне обозначения minmax() , это подразумевает автоматический минимум (т. е. minmax(auto, <flex>)).

max-content

Это ключевое слово, представляющее наибольший максимальный вклад содержимого элементов сетки, занимающих полосу сетки. Например, если первый элемент полосы сетки содержит предложение "Repetitio est mater studiorum", а второй — предложение "Dum spiro, spero", максимальный вклад содержимого будет определен размером самого большого предложения среди всех элементов сетки — "Repetitio est mater studiorum".

min-content

Это ключевое слово, представляющее наибольший минимальный вклад содержимого элементов сетки, занимающих полосу сетки. Например, если первый элемент полосы сетки содержит предложение "Repetitio est mater studiorum", а второй — предложение "Dum spiro, spero", минимальный вклад содержимого будет определен размером самого большого слова среди всех предложений в элементах сетки — "studiorum".

minmax(min, max)

Это функциональная запись, определяющая диапазон размеров, не меньший, чем min, и не больший, чем max. Если max меньше min, то max игнорируется, и функция обрабатывается как min. В качестве максимума значение <flex> задает коэффициент гибкости полосы. Оно недопустимо в качестве минимума.

auto

В качестве максимума представляет наибольший max-content размер элементов в данной полосе.

В качестве минимума представляет наибольший минимальный размер элементов в данной полосе (определяется min-width/min-height элементов). Это часто, хотя и не всегда, размер min-content.

Если используется вне обозначения minmax(), auto представляет диапазон между минимальным и максимальным значениями, описанными выше. Это работает аналогично minmax(min-content,max-content) в большинстве случаев.

Примечание: Размеры полос auto (и только auto полос) могут быть растянуты свойствами align-content и justify-content. Поэтому по умолчанию полоса размера auto займёт всё оставшееся пространство в контейнере сетки.

fit-content( [ <length> | <percentage> ] )

Представляет формулу max(minimum, min(limit, max-content)), где минимум представляет auto минимум (который часто, но не всегда, равен min-content минимуму), а предел — функция задания размера полосы, переданная в качестве аргумента fit-content(). Это по существу рассчитывается как меньшее из значений minmax(auto, max-content) и minmax(auto, limit).

repeat( [ <positive-integer> | auto-fill | auto-fit ] , <track-list> )

Представляет повторяющийся фрагмент списка полос, позволяющий записать большое количество столбцов с повторяющимся шаблоном в более компактной форме.

masonry

Значение masonry указывает, что эта ось должна быть выложена в соответствии с алгоритмом masonry.

subgrid

Значение subgrid указывает, что сетка примет охватываемую часть родительской сетки по этой оси. Вместо явного указания размеры строк/столбцов сетки будут взяты из определения родительской сетки.

Формальное определение

Начальное значение none
Применимо к контейнерам сетки
Наследуется нет
Проценты относятся к соответствующему размеру области содержимого
Вычисленное значение как указано, но с относительными длинами, преобразованными в абсолютные
Тип анимации простой список длин, процентов или calc, при условии, что единственные отличия заключаются в значениях компонентов длины, процента или calc в списке

Формальный синтаксис

grid-template-columns = 
none |
<track-list> |
<auto-track-list> |
subgrid <line-name-list>?

<track-list> =
[ <line-names>? [ <track-size> | <track-repeat> ] ]+ <line-names>?

<auto-track-list> =
[ <line-names>? [ <fixed-size> | <fixed-repeat> ] ]* <line-names>? <auto-repeat> [ <line-names>? [ <fixed-size> | <fixed-repeat> ] ]* <line-names>?

<line-name-list> =
[ <line-names> | <name-repeat> ]+

<line-names> =
'[' <custom-ident>* ']'

<track-size> =
<track-breadth> |
minmax( <inflexible-breadth> , <track-breadth> ) |
fit-content( <length-percentage [0,∞]> )

<track-repeat> =
repeat( [ <integer [1,∞]> ] , [ <line-names>? <track-size> ]+ <line-names>? )

<fixed-size> =
<fixed-breadth> |
minmax( <fixed-breadth> , <track-breadth> ) |
minmax( <inflexible-breadth> , <fixed-breadth> )

<fixed-repeat> =
repeat( [ <integer [1,∞]> ] , [ <line-names>? <fixed-size> ]+ <line-names>? )

<auto-repeat> =
repeat( [ auto-fill | auto-fit ] , [ <line-names>? <fixed-size> ]+ <line-names>? )

<name-repeat> =
repeat( [ <integer [1,∞]> | auto-fill ] , <line-names>+ )

<track-breadth> =
<length-percentage [0,∞]> |
<flex [0,∞]> |
min-content |
max-content |
auto

<inflexible-breadth> =
<length-percentage [0,∞]> |
min-content |
max-content |
auto

<length-percentage> =
<length> |
<percentage>

<fixed-breadth> =
<length-percentage [0,∞]>

Примеры

Указание размеров столбцов сетки

HTML

<div id="grid">
  <div id="areaA">A</div>
  <div id="areaB">B</div>
</div>

CSS

#grid {
  display: grid;
  width: 100%;
  grid-template-columns: 50px 1fr;
}

#areaA {
  background-color: lime;
}

#areaB {
  background-color: yellow;
}

Результат

Спецификации

Спецификация
CSS Grid Layout Module Level 2
# track-sizing
CSS Grid Layout Module Level 2
# subgrids

Совместимость браузеров

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari в IOS Samsung Internet WebView Android
grid-template-columns 57 1612–79 52 44 10.1 57 52 43 10.3 6.0 57
animation 107 107 66 93 16 107 66 73 16 21.0 107
auto 57 79 52 44 10.1 57 52 43 10.3 7.0 57
fit-content 57 16 52 44 10.1 57 52 43 10.3 6.0 57
masonry Нет Нет 77 Нет предварительный просмотр Нет Нет Нет Нет Нет Нет
max-content 57 79 52 44 10.1 57 52 43 10.3 7.0 57
min-content 57 79 52 44 10.1 57 52 43 10.3 7.0 57
minmax 57 16 52 44 10.1 57 52 43 10.3 6.0 57
none 57 79 52 44 10.1 57 52 43 10.3 7.0 57
repeat 57 16 76
57–76repeat(auto-fill, ...) и repeat(auto-fit, ...) поддерживают только один повторяющийся столбец (см. ошибку 1341507).
52–57calc() не работает в repeat() (см. ошибку 1350069).
44 10.1 57 79
57–79repeat(auto-fill, ...) и repeat(auto-fit, ...) поддерживают только один повторяющийся столбец (см. ошибку 1341507).
52–57calc() не работает в repeat() (см. ошибку 1350069).
43 10.3 6.0 57
subgrid 117 117 71 103 16 117 79 78 16 24.0 117

См. также

  • grid-template-rows
  • grid-template-areas
  • grid-template
  • Основные понятия макета сетки: дорожки сетки
  • Видео: Определение сетки
  • Подсетка

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-columns

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API