repeat()
Базовая Широко доступная
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с октября 2017 года.
Функция repeat() CSS функция представляет собой повторяющийся фрагмент списка полос, позволяя представлять большое количество столбцов или строк, обладающих повторяющимся шаблоном, в более компактной форме.
Попробовать
Эта функция может использоваться в свойствах CSS сетки grid-template-columns и grid-template-rows.
Синтаксис
/* <track-repeat> values */ repeat(4, 1fr) repeat(4, [col-start] 250px [col-end]) repeat(4, [col-start] 60% [col-end]) repeat(4, [col-start] 1fr [col-end]) repeat(4, [col-start] min-content [col-end]) repeat(4, [col-start] max-content [col-end]) repeat(4, [col-start] auto [col-end]) repeat(4, [col-start] minmax(100px, 1fr) [col-end]) repeat(4, [col-start] fit-content(200px) [col-end]) repeat(4, 10px [col-start] 30% [col-middle] auto [col-end]) repeat(4, [col-start] min-content [col-middle] max-content [col-end]) /* <auto-repeat> values */ repeat(auto-fill, 250px) repeat(auto-fit, 250px) repeat(auto-fill, [col-start] 250px [col-end]) repeat(auto-fit, [col-start] 250px [col-end]) repeat(auto-fill, [col-start] minmax(100px, 1fr) [col-end]) repeat(auto-fill, 10px [col-start] 30% [col-middle] 400px [col-end]) /* <fixed-repeat> values */ repeat(4, 250px) repeat(4, [col-start] 250px [col-end]) repeat(4, [col-start] 60% [col-end]) repeat(4, [col-start] minmax(100px, 1fr) [col-end]) repeat(4, [col-start] fit-content(200px) [col-end]) repeat(4, 10px [col-start] 30% [col-middle] 400px [col-end])
Функция repeat() принимает два аргумента:
-
количество повторений: первый аргумент указывает, сколько раз должен повторяться список полос. Он задаётся целым числом 1 или более, или ключевыми значениями
auto-fillилиauto-fit. Эти ключевые значения повторяют набор полос столько раз, сколько необходимо для заполнения контейнера сетки. -
полосы: второй аргумент задаёт набор полос, которые будут повторяться. В основе этого лежит один или более значений, где каждое значение представляет размер этой полосы. Каждый размер задаётся с помощью значения
<track-size>или значения<fixed-size>. Вы также можете указать один или более имен линий перед или после каждой полосы, предоставив<line-names>значения перед и/или после размера полосы.
Если вы используете auto-fill или auto-fit для задания количества повторений, вы можете указать только размеры полос с помощью типа <fixed-size>, а не типа <track-size>. Это даёт нам три основные формы синтаксиса для repeat():
-
<track-repeat>, использующая:- целое число для задания количества повторений
-
значения
<track-size>для задания размеров полос.
-
<auto-repeat>, использующая:-
auto-fillилиauto-fitдля задания количества повторений -
<fixed-size>для задания размеров полос.
-
-
<fixed-repeat>, использующая:- целое число для задания количества повторений
-
значения
<fixed-size>для задания размеров полос.
Затем, если объявление свойства использует <auto-repeat>, разрешается использовать только <fixed-repeat> для любых дополнительных repeat() вызовов. Например, это недопустимо, так как объединяет форму <auto-repeat> с формой <track-repeat>:
.wrapper {
grid-template-columns:
repeat(auto-fill, 10px)
repeat(2, minmax(min-content, max-content));
}
Существует четвёртая форма, <name-repeat>, которая используется для добавления имён линий в подсетки. Она используется только со словом subgrid и указывает только имена линий, а не размеры полос.
Значения
<fixed-size>-
Одна из следующих форм:
- значение
<length-percentage> - функция
minmax()со следующими компонентами:-
minзадано как<length-percentage>значение -
maxзадано как одно из<length-percentage>значение,<flex>значение или одно из следующих ключевых слов:min-content,max-contentилиauto
-
- функция
minmax()со следующими компонентами:-
minзадано как<length-percentage>значение или одно из следующих ключевых слов:min-content,max-contentилиauto -
maxзадано как<length-percentage>значение.
-
- значение
<flex>-
Неотрицательная размерность с единицей
fr, задающая коэффициент растяжения полосы. Каждая полоса размером<flex>получает долю оставшегося пространства пропорционально своему коэффициенту растяжения. <length>-
Положительная целая длина.
<line-names>-
Ноль или более значений
<custom-ident>, разделённых пробелами и заключённых в квадратные скобки, например:[first header-start]. <percentage>-
Неотрицательный процент от ширины контейнера сетки в столбцах и высоты контейнера сетки в строках. Если размер контейнера сетки зависит от размера его полос, то
<percentage>должен рассматриваться какauto. Веб-браузер может скорректировать вклад полосы в размер контейнера сетки и увеличить окончательный размер полосы на минимальную величину, которая привела бы к выполнению условия процентного значения. <track-size>-
Одна из следующих форм:
- значение
<length-percentage>,<flex>значение или одно из следующих ключевых слов:min-content,max-contentилиauto - функция
minmax()со следующими компонентами:-
minзадано как<length-percentage>значение или одно из следующих ключевых слов:min-content,max-contentилиauto -
maxзадано как<length-percentage>значение,<flex>значение или одно из следующих ключевых слов:min-content,max-contentилиauto
-
- функция
fit-content(), передающая значение<length-percentage>.
- значение
auto-
В качестве максимального значения идентично
max-content. В качестве минимального значения представляет собой максимальный минимальный размер (как задано вmin-width/min-height) элементов сетки, занимающих полосу сетки. auto-fill-
Если у контейнера сетки есть определённый или максимальный размер в соответствующей оси, то количество повторений — это наибольшее возможное положительное целое число, которое не приводит к переполнению контейнера сетки. Каждая полоса рассматривается как функция максимального размера полосы (каждое независимое значение, используемое для определения
grid-template-rowsилиgrid-template-columns). Если она определена. В противном случае, как функция минимального размера полосы, с учётом интервалов сетки. Если любое количество повторений приведет к переполнению, то повторение1. В противном случае, если у контейнера сетки есть определённый минимальный размер в соответствующей оси, то количество повторений — это наименьшее возможное положительное целое число, которое удовлетворяет этому минимальному требованию. В противном случае указанный список полос повторяется только один раз. auto-fit-
Ведёт себя так же, как
auto-fill, за исключением того, что после размещения элементов сетки любые пустые повторяющиеся полосы схлопываются. Пустая полоса — это та, в которой нет размещённых или охватывающих её элементов сетки. (Это может привести к схлопыванию всех полос, если они все пусты.)Схлопывающаяся полоса обрабатывается как имеющая одну фиксированную функцию размера полосы
0px, а интервалы по обе стороны от неё схлопываются.Для нахождения количества автоматически повторяющихся полос веб-браузер округляет размер полосы до значения, указанного веб-браузером (например,
1px), чтобы избежать деления на ноль. max-content-
Представляет собой максимальный вклад max-content элементов сетки, занимающих полосу сетки.
min-content-
Представляет собой максимальный вклад min-content элементов сетки, занимающих полосу сетки.
Примеры
Указание столбцов сетки с помощью repeat()
HTML
<div id="container"> <div>This item is 50 pixels wide.</div> <div>Item with flexible width.</div> <div>This item is 50 pixels wide.</div> <div>Item with flexible width.</div> <div>Inflexible item of 100 pixels width.</div> </div>
CSS
#container {
display: grid;
grid-template-columns: repeat(2, 50px 1fr) 100px;
grid-gap: 5px;
box-sizing: border-box;
height: 200px;
width: 100%;
background-color: #8cffa0;
padding: 10px;
}
#container > div {
background-color: #8ca0ff;
padding: 5px;
}
Результат
Технические характеристики
| Спецификация |
|---|
| Модуль CSS Grid Layout Level 2 # repeat-notation |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
repeat |
57 | 16 | 7657–76repeat(auto-fill, ...) и repeat(auto-fit, ...) поддерживают только один повторяющийся столбец (см. ошибку 1341507). |
44 | 10.1 | 57 | 7957–79repeat(auto-fill, ...) и repeat(auto-fit, ...) поддерживают только один повторяющийся столбец (см. ошибку 1341507). |
43 | 10.3 | 6.0 | 57 |
См. также
© 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/repeat