Spec-Zone.ru › CSS

Функция CSS `repeating-radial-gradient()`

Базовая поддержка Широко поддерживается

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

repeating-radial-gradient() CSS-функция создаёт изображение из повторяющихся градиентов, расходящихся от исходной точки. Она похожа на radial-gradient() и принимает те же аргументы, но бесконечно повторяет цветовые остановки во всех направлениях, чтобы заполнить весь контейнер, подобно repeating-linear-gradient(). Результат функции — объект типа данных <gradient>, который является особым видом <image>.

Попробуйте

background: repeating-radial-gradient(#e66465, #9198e5 20%);
background: repeating-radial-gradient(closest-side, #3f87a6, #ebf8e1, #f69d3c);
background: repeating-radial-gradient(
  circle at 100%,
  #333333,
  #333333 10px,
  #eeeeee 10px,
  #eeeeee 20px
);
<section class="display-block" id="default-example">
  <div id="example-element"></div>
</section>
#example-element {
  min-height: 100%;
}

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

Как и любой градиент, повторяющийся радиальный градиент не имеет собственных размеров; то есть у него нет естественного или предпочтительного размера, а также предпочтительного соотношения сторон. Его фактический размер будет соответствовать размеру элемента, к которому он применяется.

Поскольку <gradient> относятся к типу данных <image>, их можно использовать только там, где допустимы <image>. По этой причине repeating-radial-gradient() не будет работать со свойством background-color и другими свойствами, использующими тип данных color.

Синтаксис

/* A gradient at the center of its container,
   starting red, changing to blue, and finishing green,
   with the colors repeating every 30px */
repeating-radial-gradient(circle at center, red 0, blue, green 30px)

/* An elliptical gradient near the top left of its container,
   starting red, changing to green and back again,
   repeating five times between the center and the bottom right corner,
   and only once between the center and the top left corner */
repeating-radial-gradient(farthest-corner at 20% 20%, red 0, green, red 20%)

Значения

position
Положение градиента, интерпретируемое так же, как background-position или transform-origin. Если значение не указано, по умолчанию используется center.
<shape>
Форма градиента. Значением может быть circle (то есть форма градиента — окружность с постоянным радиусом) или ellipse (то есть форма — эллипс с осями, параллельными осям координат). Если значение не указано, по умолчанию используется ellipse.
<extent-keyword>

Ключевое слово, описывающее размер конечной фигуры. Возможны следующие значения:

Ключевое слово Описание
closest-side Конечная фигура градиента достигает ближайшей к её центру стороны прямоугольника (для окружностей) или обеих ближайших к центру сторон — вертикальной и горизонтальной (для эллипсов).
closest-corner Конечная фигура градиента имеет такой размер, чтобы точно достигать ближайшего к её центру угла прямоугольника.
farthest-side Подобно closest-side, но конечная фигура имеет такой размер, чтобы достигать наиболее удалённой от её центра стороны прямоугольника (или вертикальной и горизонтальной сторон).
farthest-corner Конечная фигура градиента имеет такой размер, чтобы точно достигать наиболее удалённого от её центра угла прямоугольника.

Примечание: В ранних реализациях этой функции использовались и другие ключевые слова (cover и contain) как синонимы стандартных farthest-corner и closest-side соответственно. Используйте только стандартные ключевые слова, поскольку некоторые реализации уже отказались от поддержки старых вариантов.

<color-stop>
Значение color цветовой остановки, за которым может следовать необязательная позиция остановки (либо <percentage>, либо <length> вдоль оси градиента). Процентное значение 0% или длина 0 обозначает центр градиента; значение 100% обозначает точку пересечения конечной фигуры с виртуальным лучом градиента. Промежуточные процентные значения располагаются вдоль виртуального луча градиента линейно.

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

<repeating-radial-gradient()> = 
  repeating-radial-gradient( [ <radial-gradient-syntax> ] )

<radial-gradient-syntax> = 
  [ [ [ <radial-shape> || <radial-size> ]? [ at <position> ]? ] || <color-interpolation-method> ]? , <color-stop-list>

<radial-shape> = 
  circle |
  ellipse

<radial-size> = 
  <radial-extent> |
  <length [0,∞]> |
  <length-percentage [0,∞]>{2}

<position> = 
  [ [ left | center | right ] || [ top | center | bottom ] | [ left | center | right | <length-percentage> ] [ top | center | bottom | <length-percentage> ]? | [ [ left | right ] <length-percentage> ] && [ [ top | bottom ] <length-percentage> ] ]

<color-interpolation-method> = 
  in [ <rectangular-color-space> | <polar-color-space> <hue-interpolation-method>? | <custom-color-space> ]

<color-stop-list> = 
  <linear-color-stop> , [ <linear-color-hint>? , <linear-color-stop> ]#?

<radial-extent> = 
  closest-corner |
  closest-side |
  farthest-corner |
  farthest-side

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

<rectangular-color-space> = 
  srgb |
  srgb-linear |
  display-p3 |
  display-p3-linear |
  a98-rgb |
  prophoto-rgb |
  rec2020 |
  lab |
  oklab |
  xyz |
  xyz-d50 |
  xyz-d65

<polar-color-space> = 
  hsl |
  hwb |
  lch |
  oklch

<hue-interpolation-method> = 
  [ shorter | longer | increasing | decreasing ] hue

<custom-color-space> = 
  <dashed-ident>

<linear-color-stop> = 
  <color> <color-stop-length>?

<linear-color-hint> = 
  <length-percentage>

<color> = 
  <color-base> |
  currentColor |
  <system-color> |
  <light-dark()> |
  <deprecated-system-color>

<color-stop-length> = 
  <length-percentage>{1,2}

<color-base> = 
  <hex-color> |
  <color-function> |
  <named-color> |
  <color-mix()> |
  transparent

<system-color> = 
  AccentColor |
  AccentColorText |
  ActiveText |
  ButtonBorder |
  ButtonFace |
  ButtonText |
  Canvas |
  CanvasText |
  Field |
  FieldText |
  GrayText |
  Highlight |
  HighlightText |
  LinkText |
  Mark |
  MarkText |
  SelectedItem |
  SelectedItemText |
  VisitedText

<light-dark()> = 
  light-dark( <color>, <color> )

<deprecated-system-color> = 
  ActiveBorder |
  ActiveCaption |
  AppWorkspace |
  Background |
  ButtonHighlight |
  ButtonShadow |
  CaptionText |
  InactiveBorder |
  InactiveCaption |
  InactiveCaptionText |
  InfoBackground |
  InfoText |
  Menu |
  MenuText |
  Scrollbar |
  ThreeDDarkShadow |
  ThreeDFace |
  ThreeDHighlight |
  ThreeDLightShadow |
  ThreeDShadow |
  Window |
  WindowFrame |
  WindowText

<color-function> = 
  <rgb()> |
  <rgba()> |
  <hsl()> |
  <hsla()> |
  <hwb()> |
  <lab()> |
  <lch()> |
  <oklab()> |
  <oklch()> |
  <color()>

<named-color> = 
  aliceblue |
  antiquewhite |
  aqua |
  aquamarine |
  azure |
  beige |
  bisque |
  black |
  blanchedalmond |
  blue |
  blueviolet |
  brown |
  burlywood |
  cadetblue |
  chartreuse |
  chocolate |
  coral |
  cornflowerblue |
  cornsilk |
  crimson |
  cyan |
  darkblue |
  darkcyan |
  darkgoldenrod |
  darkgray |
  darkgreen |
  darkgrey |
  darkkhaki |
  darkmagenta |
  darkolivegreen |
  darkorange |
  darkorchid |
  darkred |
  darksalmon |
  darkseagreen |
  darkslateblue |
  darkslategray |
  darkslategrey |
  darkturquoise |
  darkviolet |
  deeppink |
  deepskyblue |
  dimgray |
  dimgrey |
  dodgerblue |
  firebrick |
  floralwhite |
  forestgreen |
  fuchsia |
  gainsboro |
  ghostwhite |
  gold |
  goldenrod |
  gray |
  green |
  greenyellow |
  grey |
  honeydew |
  hotpink |
  indianred |
  indigo |
  ivory |
  khaki |
  lavender |
  lavenderblush |
  lawngreen |
  lemonchiffon |
  lightblue |
  lightcoral |
  lightcyan |
  lightgoldenrodyellow |
  lightgray |
  lightgreen |
  lightgrey |
  lightpink |
  lightsalmon |
  lightseagreen |
  lightskyblue |
  lightslategray |
  lightslategrey |
  lightsteelblue |
  lightyellow |
  lime |
  limegreen |
  linen |
  magenta |
  maroon |
  mediumaquamarine |
  mediumblue |
  mediumorchid |
  mediumpurple |
  mediumseagreen |
  mediumslateblue |
  mediumspringgreen |
  mediumturquoise |
  mediumvioletred |
  midnightblue |
  mintcream |
  mistyrose |
  moccasin |
  navajowhite |
  navy |
  oldlace |
  olive |
  olivedrab |
  orange |
  orangered |
  orchid |
  palegoldenrod |
  palegreen |
  paleturquoise |
  palevioletred |
  papayawhip |
  peachpuff |
  peru |
  pink |
  plum |
  powderblue |
  purple |
  rebeccapurple |
  red |
  rosybrown |
  royalblue |
  saddlebrown |
  salmon |
  sandybrown |
  seagreen |
  seashell |
  sienna |
  silver |
  skyblue |
  slateblue |
  slategray |
  slategrey |
  snow |
  springgreen |
  steelblue |
  tan |
  teal |
  thistle |
  tomato |
  turquoise |
  violet |
  wheat |
  white |
  whitesmoke |
  yellow |
  yellowgreen

<color-mix()> = 
  color-mix( <color-interpolation-method> , [ <color> && <percentage [0,100]>? ]#{2})

<rgb()> = 
  rgb( <percentage>#{3} , <alpha-value>? ) |
  rgb( <number>#{3} , <alpha-value>? ) |
  rgb( [ <number> | <percentage> | none ]{3} [ / [ <alpha-value> | none ] ]? )

<rgba()> = 
  rgba( <percentage>#{3} , <alpha-value>? ) |
  rgba( <number>#{3} , <alpha-value>? ) |
  rgba( [ <number> | <percentage> | none ]{3} [ / [ <alpha-value> | none ] ]? )

<hsl()> = 
  hsl( <hue>, <percentage>, <percentage>, <alpha-value>? ) |
  hsl( [ <hue> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? )

<hsla()> = 
  hsla( <hue>, <percentage>, <percentage>, <alpha-value>? ) |
  hsla( [ <hue> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? )

<hwb()> = 
  hwb( [ <hue> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? )

<lab()> = 
  lab( [<percentage> | <number> | none] [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ / [<alpha-value> | none] ]? )

<lch()> = 
  lch( [<percentage> | <number> | none] [ <percentage> | <number> | none] [ <hue> | none] [ / [<alpha-value> | none] ]? )

<oklab()> = 
  oklab( [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ / [<alpha-value> | none] ]? )

<oklch()> = 
  oklch( [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ <hue> | none] [ / [<alpha-value> | none] ]? )

<color()> = 
  color( [ from <color> ]? <colorspace-params> [ / [ <alpha-value> | none ] ]? )

<alpha-value> = 
  <number> |
  <percentage>

<hue> = 
  <number> |
  <angle>

<colorspace-params> = 
  [<custom-params> | <predefined-rgb-params> | <xyz-params>]

<custom-params> = 
  <dashed-ident> [ <number> | <percentage> | none ]+

<predefined-rgb-params> = 
  <predefined-rgb> [ <number> | <percentage> | none ]{3}

<xyz-params> = 
  <xyz> [ <number> | <percentage> | none ]{3}

<predefined-rgb> = 
  srgb |
  srgb-linear |
  display-p3 |
  display-p3-linear |
  a98-rgb |
  prophoto-rgb |
  rec2020

<xyz> = 
  xyz |
  xyz-d50 |
  xyz-d65

Примеры

Чёрно-белый градиент

<div class="radial-gradient"></div>
.radial-gradient {
  width: 120px;
  height: 120px;
}
.radial-gradient {
  background: repeating-radial-gradient(
    black,
    black 5px,
    white 5px,
    white 10px
  );
}

Наиболее удалённый угол

<div class="radial-gradient"></div>
.radial-gradient {
  width: 240px;
  height: 120px;
}
.radial-gradient {
  background: repeating-radial-gradient(
    ellipse farthest-corner at 20% 20%,
    red,
    black 5%,
    blue 5%,
    green 10%
  );
  background: repeating-radial-gradient(
    ellipse farthest-corner at 20% 20%,
    red 0 5%,
    green 5% 10%
  );
}

Эллиптический градиент будет расположен на 20% от левого верхнего угла и повторится 10 раз между центром и наиболее удалённым углом (нижним правым углом). Браузеры, поддерживающие многоцветные остановки, отобразят эллипс в красную и зелёную полоску. В браузерах, пока не поддерживающих этот синтаксис, будет отображаться градиент, переходящий от красного к чёрному, а затем от синего к зелёному.

Интерполяция оттенка

<div class="shorter"></div>
<div class="longer"></div>
div {
  display: inline-block;
  margin-top: 1rem;
  width: 45vw;
  height: 80vh;
}

.shorter::before {
  content: "shorter hue";
  display: block;
  margin-top: -1rem;
}

.longer::before {
  content: "longer hue";
  display: block;
  margin-top: -1rem;
}

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

.shorter {
  background-image: repeating-radial-gradient(
    circle at center in hsl shorter hue,
    red 30px,
    blue 60px
  );
}

.longer {
  background-image: repeating-radial-gradient(
    circle at center in hsl longer hue,
    red 30px,
    blue 60px
  );
}

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

Примечание: Другие примеры см. в статье Использование градиентов CSS.

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

Спецификация
Модуль CSS Images уровня 3
# repeating-gradients

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

Компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android WebView на iOS
repeating-radial-gradient
26
10
12
16До Firefox 36 градиенты не применялись в предварительно умноженном цветовом пространстве, из-за чего при использовании прозрачности неожиданно появлялись оттенки серого.
49
3.6Начиная с Firefox 42 версию градиентов с префиксом можно отключить, задав для layout.css.prefixes.gradients значение false.
12.1
15
12–15
7
5.1Safari 4 поддерживал экспериментальную функцию -webkit-gradient(radial,…). Этот старый, устаревший синтаксис по-прежнему поддерживается для обеспечения совместимости.
26
18
16До Firefox 36 градиенты не применялись в предварительно умноженном цветовом пространстве, из-за чего при использовании прозрачности неожиданно появлялись оттенки серого.
49
10Начиная с Firefox 42 версию градиентов с префиксом можно отключить, задав для layout.css.prefixes.gradients значение false.
12.1
14
12–14
7
5Safari на iOS 3.2 поддерживал экспериментальную функцию -webkit-gradient(radial,…). Этот старый, устаревший синтаксис по-прежнему поддерживается для обеспечения совместимости.
1.5
1.0
4.4
4.4
7
5WebView на iOS 3.2 поддерживал экспериментальную функцию -webkit-gradient(radial,…). Этот старый, устаревший синтаксис по-прежнему поддерживается для обеспечения совместимости.
at
26
12
16До Firefox 36 градиенты не применялись в предварительно умноженном цветовом пространстве, из-за чего при использовании прозрачности неожиданно появлялись оттенки серого.
49
10Начиная с Firefox 42 версию градиентов с префиксом можно отключить, задав для layout.css.prefixes.gradients значение false.
15
12–15
7
26
16До Firefox для Android 36 градиенты не применялись в предварительно умноженном цветовом пространстве, из-за чего при использовании прозрачности неожиданно появлялись оттенки серого.
49
10Начиная с Firefox для Android 42 версию градиентов с префиксом можно отключить, задав для layout.css.prefixes.gradients значение false.
14
12–14
7
1.5
4.4
7
doubleposition
71
79
64
58
12.1
71
64
50
12.2
10.0
71
12.2
hue_interpolation_method
111
111
127
97
16.2
111
127
75
16.2
22.0
111
16.2
interpolation_color_space
111
111
127
97
16.2
111
127
75
16.2
22.0
111
16.2
interpolation_hints
40
79
36
27
7
40
46
27
7
4.0
40
7
single_color_stop
135
135
136
120
18.4
135
136
89
18.4
29.0
135
18.4

См. также

  • Использование градиентов CSS
  • Другие функции градиентов: radial-gradient(), linear-gradient(), repeating-linear-gradient(), conic-gradient(), repeating-conic-gradient()
  • <hue-interpolation-method>
  • <color-interpolation-method>
  • <image>
  • image()
  • element()
  • image-set()
  • cross-fade()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/gradient/repeating-radial-gradient

Spec-Zone.ru

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