Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Revision 1046726 of repeating-radial-gradient()

  • Revision slug: Web/CSS/repeating-radial-gradient
  • Revision title: repeating-radial-gradient()
  • Revision id: 1046726
  • Created:
  • Creator: Simplexible
  • Is current revision? No
  • Comment {{xref_csspercentage}} replaced with {{cssxref("<percentage>")}}

Revision Content

{{CSSRef}}

This works similarly to the standard radial gradients as described by {{cssxref("radial-gradient")}}, but it automatically repeats the color stops infinitely in both directions, with their positions shifted by multiples of the difference between the last color stop's position and the first one's position.

Like any other gradient, a repeating CSS radial gradient is not a CSS {{xref_csscolorvalue}} but an image with no intrinsic dimensions; that is, it has no natural or preferred size, nor ratio. Its concrete size will match the one of the element it applies to.

Syntax

Definition of the ending shape
repeating-radial-gradient( circle, … )                /* Synonym of repeating-radial-gradient( circle farthest-corner, …) */
repeating-radial-gradient( ellipse, … )               /* Synonym of repeating-radial-gradient( ellipse farthest-corner, …) */
repeating-radial-gradient( <extent-keyword>, … )      /* It draws concentric circles */
repeating-radial-gradient( circle radius, … )         /* Concentrinc centered circles of the given length. It can't be in %. */
repeating-radial-gradient( ellipse x-axis y-axis, … ) /* The two semi-major axis are given, horizontal, then vertical */

Definition of the position of the shape
repeating-radial-gradient (… at <position>, … )

Definition of the color stops
repeating-radial-gradient (…, <color-stop>)
repeating-radial-gradient (…, <color-stop>, <color-stop>)

Values

<position>
A {{cssxref("<position>")}}, interpreted in the same way as {{ Cssxref("background-position")}} or {{Cssxref("transform-origin")}}. If omitted, the default is center.
<angle>
An angle establishing the gradient line, which extends from the starting point at this angle; this is 0deg by default.
<shape>
The gradient's shape. This is one of circle (meaning that the gradient's shape is a circle with constant radius) or ellipse (meaning that the shape is an axis-aligned ellipse). The default value is ellipse.
<size>
The size of the gradient. This is one of the {{anch("Size constants")}} listed below.
<color-stop>
Representing a fixed color at a precise position, this value is composed by a {{Xref_csscolorvalue}} value, followed by an optional stop position (either a {{cssxref("<percentage>")}} or a {{cssxref("<length>")}} along the virtual gradient ray). A percentage of 0%, or a length of 0, represents the center of the gradient, the value 100% the intersection of the ending shape with the virtual gradient ray. Percentage values in-between. are linearily positioned on the gradient ray.
<extent-keyword>
Are keywords describing how big the ending shape must be. The possible keywords are:
Constant Description
closest-side The gradient's ending shape meets the side of the box closest to its center (for circles) or meets both the vertical and horizontal sides closest to the center (for ellipses).
closest-corner The gradient's ending shape is sized so it exactly meets the closest corner of the box from its center.
farthest-side Similar to closest-side, except the ending shape is sized to meet the side of the box farthest from its center (or vertical and horizontal sides).
farthest-corner The gradient's ending shape is sized so it exactly meets the farthest corner of the box from its center.
Early drafts were defining to other keywords, cover and contain, synonyms of the standard farthest-corner and closest-side respectively. Do exclusively use the standard keyword as some implementations have dropped to older variants.

Formal syntax

repeating-radial-gradient( 
       [[ circle  || <length> ]                     [at <position>]? , | 
        [ ellipse || [<length> | <percentage> ]{2}] [at <position>]? , |
        [[ circle | ellipse ] || <extent-keyword> ] [at <position>]? , |
                                                     at <position>   ,    <color-stop> [ , <color-stop> ]+ )
        \---------------------------------------------------------------/\--------------------------------/
                  Contour, size and position of the ending shape               List of color stops  
    
where <extent-keyword> = closest-corner | closest-side | farthest-corner | farthest-side
  and <color-stop> = <color> [ <percentage> | <length> ]?

Size constants

Constant Description
closest-side The gradient's shape meets the side of the box closest to its center (for circles) or meets both the vertical and horizontal sides closest to the center (for ellipses).
closest-corner The gradient's shape is sized so it exactly meets the closest corner of the box from its center.
farthest-side Similar to closest-side, except the shape is sized to meet the side of the box farthest from its center (or vertical and horizontal sides).
farthest-corner The gradient's shape is sized so it exactly meets the farthest corner of the box from its center.
contain A synonym for closest-side.
cover A synonym for farthest-corner.

Usage

Radial gradients also run along an axis. At each end point of the axis, a radius is specified. This can be imagined as creating two "circles", where for each circle the center is specified by the point and the radius is specified by the radius length. The gradient runs outwards from the circumference of the inner circle to the circumference of the outer circle.

Black & white

{{EmbedLiveSample('Black_white', '300px', '120px', '')}}

background: repeating-radial-gradient(black, black 5px, white 5px, white 10px);

Farthest-corner

{{EmbedLiveSample('Farthest-corner', '300px', '120px', '')}}

background: repeating-radial-gradient(ellipse farthest-corner, red, black 5%, blue 5%, green 10%);

Specifications

Specification Status Comment
{{SpecName('CSS3 Images', '#repeating-gradients', 'repeating-radial-gradient()')}} {{Spec2('CSS3 Images')}} Initial definition.

Browser compatibility

{{CompatibilityTable}}

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support (on {{cssxref("background")}} and {{cssxref("background-image")}}) 10 {{property_prefix("-webkit")}} {{CompatGeckoDesktop("1.9.2")}}{{property_prefix("-moz")}}
{{CompatGeckoDesktop("16")}}[1]
10 12 {{property_prefix("-o")}}
12.5
5.1 {{property_prefix("-webkit")}}
On {{cssxref("border-image")}} {{CompatVersionUnknown}} {{CompatGeckoDesktop("29")}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
On any other property that accept {{cssxref("<image>")}} {{CompatNo}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
Interpolation hints (a percent without a color) 40 {{CompatGeckoDesktop("36")}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}
Feature Android Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile
Basic support (on {{cssxref("background")}} and {{cssxref("background-image")}}) {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}
On {{cssxref("border-image")}} {{CompatGeckoMobile("29")}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
On any other property that accept {{cssxref("<image>")}} {{CompatNo}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}

[1] Before Firefox 36, Gecko didn't apply gradient on the pre-multiplied color space, leading to shade of grey unexpectedly appearing when used with transparency. Since Firefox 42, the prefixed version of gradients can be disabled by setting layout.css.prefixes.gradients to false.

See also

Revision Source

<p>{{CSSRef}}</p>

<p>This works similarly to the standard radial gradients as described by {{cssxref("radial-gradient")}}, but it automatically repeats the color stops infinitely in both directions, with their positions shifted by multiples of the difference between the last color stop's position and the first one's position.</p>

<p>Like any other gradient, a repeating CSS radial gradient is not a CSS {{xref_csscolorvalue}} but an image with <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/image#no_intrinsic">no intrinsic dimensions</a>; that is,&nbsp;it has no natural or preferred size, nor ratio. Its concrete size will match the one of the element it applies to.</p>

<h2 id="Syntax">Syntax</h2>

<pre class="brush: css">
<strong>Definition of the ending shape</strong>
repeating-radial-gradient( circle, … )                /* Synonym of repeating-radial-gradient( circle farthest-corner, …) */
repeating-radial-gradient( ellipse, … )               /* Synonym of repeating-radial-gradient( ellipse farthest-corner, …) */
repeating-radial-gradient( <em>&lt;extent-keyword&gt;</em>, … )      /* It draws concentric circles */
repeating-radial-gradient( circle <em>radius</em>, … )         /* Concentrinc centered circles of the given length. It can't be in %. */
repeating-radial-gradient( ellipse <em>x-axis</em> <em>y-axis</em>, … ) /* The two semi-major axis are given, horizontal, then vertical */

<strong>Definition of the position of the shape</strong>
repeating-radial-gradient (… at &lt;position&gt;, … )

<strong>Definition of the color stops
</strong>repeating-radial-gradient (…, &lt;color-stop&gt;)
repeating-radial-gradient (…, &lt;color-stop&gt;, &lt;color-stop&gt;)

</pre>

<h3 id="Values">Values</h3>

<dl>
 <dt><code>&lt;position&gt;</code></dt>
 <dd>A {{cssxref("&lt;position&gt;")}}, interpreted in the same way as {{ Cssxref("background-position")}} or {{Cssxref("transform-origin")}}. If omitted, the default is <code>center</code>.</dd>
 <dt>&lt;<code>angle</code>&gt;</dt>
 <dd>An angle establishing the gradient line, which extends from the starting point at this angle; this is <code>0deg</code> by default.</dd>
 <dt><code>&lt;shape&gt;</code></dt>
 <dd>The gradient's shape. This is one of <code>circle</code> (meaning that the gradient's shape is a circle with constant radius) or <code>ellipse</code> (meaning that the shape is an axis-aligned ellipse). The default value is <code>ellipse</code>.</dd>
 <dt><code>&lt;size&gt;</code></dt>
 <dd>The size of the gradient. This is one of the {{anch("Size constants")}} listed below.</dd>
 <dt><code>&lt;color-stop&gt;</code></dt>
 <dd>Representing a fixed color at a precise position, this value is composed by a {{Xref_csscolorvalue}} value, followed by an optional stop position (either a {{cssxref("&lt;percentage&gt;")}} or a {{cssxref("&lt;length&gt;")}} along the virtual gradient ray). A percentage of <code>0%</code>, or a length of <code>0</code>, represents the center of the gradient, the value <code>100%</code> the intersection of the ending shape with the virtual gradient ray. Percentage values in-between. are linearily positioned on the gradient ray.</dd>
 <dt><code>&lt;extent-keyword&gt;</code></dt>
 <dd>Are keywords describing how big the ending shape must be. The possible keywords are:</dd>
 <dd>
 <table class="standard-table">
  <tbody>
   <tr>
    <th>Constant</th>
    <th>Description</th>
   </tr>
   <tr>
    <td><code>closest-side</code></td>
    <td>The gradient's ending shape meets the side of the box closest to its center (for circles) or meets both the vertical and horizontal sides closest to the center (for ellipses).</td>
   </tr>
   <tr>
    <td><code>closest-corner</code></td>
    <td>The gradient's ending shape is sized so it exactly meets the closest corner of the box from its center.</td>
   </tr>
   <tr>
    <td><code>farthest-side</code></td>
    <td>Similar to closest-side, except the ending shape is sized to meet the side of the box farthest from its center (or vertical and horizontal sides).</td>
   </tr>
   <tr>
    <td><code>farthest-corner</code></td>
    <td>The gradient's ending shape is sized so it exactly meets the farthest corner of the box from its center.</td>
   </tr>
  </tbody>
 </table>
 Early drafts were defining to other keywords, <code>cover</code> and <code>contain</code>, synonyms of the standard <code><span class="st">farthest-corner</span></code> and <code>closest-side</code> respectively. Do exclusively use the standard keyword as some implementations have dropped to older variants.</dd>
</dl>

<h3 id="Formal_syntax">Formal syntax</h3>

<pre class="syntaxbox">
repeating-radial-gradient( 
       [[ circle  || <a href="/en-US/docs/CSS/length">&lt;length&gt;</a> ]                     [at <a href="/en-US/docs/Web/CSS/position_value">&lt;position&gt;</a>]? , | 
        [ ellipse || [<a href="/en-US/docs/CSS/length">&lt;length&gt;</a> | <a href="/en-US/docs/CSS/percentage">&lt;percentage&gt;</a> ]{2}] [at <a href="/en-US/docs/Web/CSS/position_value">&lt;position&gt;</a>]? , |
        [[ circle | ellipse ] || &lt;extent-keyword&gt; ] [at <a href="/en-US/docs/Web/CSS/position_value">&lt;position&gt;</a>]? , |
                                                     at <a href="/en-US/docs/Web/CSS/position_value">&lt;position&gt;</a>   ,    &lt;color-stop&gt; [ , &lt;color-stop&gt; ]+ )
        \---------------------------------------------------------------/\--------------------------------/
                  Contour, size and position of the ending shape               List of color stops  
    
where &lt;extent-keyword&gt; = closest-corner | closest-side | farthest-corner | farthest-side
  and<code> &lt;color-stop&gt; = &lt;color&gt; [ &lt;percentage&gt; | &lt;length&gt; ]?</code></pre>

<h2 id="Size_constants">Size constants</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th>Constant</th>
   <th>Description</th>
  </tr>
  <tr>
   <td><code>closest-side</code></td>
   <td>The gradient's shape meets the side of the box closest to its center (for circles) or meets both the vertical and horizontal sides closest to the center (for ellipses).</td>
  </tr>
  <tr>
   <td><code>closest-corner</code></td>
   <td>The gradient's shape is sized so it exactly meets the closest corner of the box from its center.</td>
  </tr>
  <tr>
   <td><code>farthest-side</code></td>
   <td>Similar to closest-side, except the shape is sized to meet the side of the box farthest from its center (or vertical and horizontal sides).</td>
  </tr>
  <tr>
   <td><code>farthest-corner</code></td>
   <td>The gradient's shape is sized so it exactly meets the farthest corner of the box from its center.</td>
  </tr>
  <tr>
   <td><code>contain</code></td>
   <td>A synonym for <code>closest-side</code>.</td>
  </tr>
  <tr>
   <td><code>cover</code></td>
   <td>A synonym for <code>farthest-corner</code>.</td>
  </tr>
 </tbody>
</table>

<h2 id="Usage">Usage</h2>

<p>Radial gradients also run along an axis. At each end point of the axis, a radius is specified. This can be imagined as creating two "circles", where for each circle the center is specified by the point and the radius is specified by the radius length. The gradient runs outwards from the circumference of the inner circle to the circumference of the outer circle.</p>

<h3 id="Black_white">Black &amp; white</h3>

<pre class="brush: html" style="display:none;">
&lt;div id="grad1"&gt;Black white&lt;/div&gt;</pre>

<pre class="brush: css" style="display:none;">
div {
  display: block;
  width: 50%;
  height: 80px;
  border-color: #000000;
  padding: 10px;
}
#grad1 {
  background: -webkit-repeating-radial-gradient(black, black 5px, white 5px, white 10px);
  background: -moz-repeating-radial-gradient(black, black 5px, white 5px, white 10px);
  background: -ms-repeating-radial-gradient(black, black 5px, white 5px, white 10px);
  background: -o-repeating-radial-gradient(black, black 5px, white 5px, white 10px);
  background: repeating-radial-gradient(black, black 5px, white 5px, white 10px);
  text-shadow: 1px 1px 0pt black;
  color: white;
  border: 1px solid black;
  height:5.5em;
}
</pre>

<p>{{EmbedLiveSample('Black_white', '300px', '120px', '')}}</p>

<pre class="brush: css">
background: repeating-radial-gradient(black, black 5px, white 5px, white 10px);</pre>

<h3 id="Farthest-corner">Farthest-corner</h3>

<pre class="brush: html" style="display:none;">
&lt;div id="grad1"&gt;Farthest-corner&lt;/div&gt;</pre>

<pre class="brush: css" style="display:none;">
div {
  display: block;
  width: 50%;
  height: 80px;
  border-radius: 10px;
  border-color: #000000;
  padding: 10px;
}
#grad1 {
  background: -webkit-repeating-radial-gradient(ellipse farthest-corner, red, black 5%, blue 5%, green 10%);
  background: -moz-repeating-radial-gradient(ellipse farthest-corner, red, black 5%, blue 5%, green 10%);
  background: -ms-repeating-radial-gradient(ellipse farthest-corner, red, black 5%, blue 5%, green 10%);
  background: -o-repeating-radial-gradient(ellipse farthest-corner, red, black 5%, blue 5%, green 10%);
  background: repeating-radial-gradient(ellipse farthest-corner, red, black 5%, blue 5%, green 10%);
  text-shadow: 1px 1px 0pt blue;
  color: white;
  border: 1px solid black;
  height:5.5em;
}
</pre>

<p>{{EmbedLiveSample('Farthest-corner', '300px', '120px', '')}}</p>

<pre class="brush: css">
background: repeating-radial-gradient(ellipse farthest-corner, red, black 5%, blue 5%, green 10%);</pre>

<h2 id="Specifications">Specifications</h2>

<table class="standard-table">
 <thead>
  <tr>
   <th scope="col">Specification</th>
   <th scope="col">Status</th>
   <th scope="col">Comment</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>{{SpecName('CSS3 Images', '#repeating-gradients', 'repeating-radial-gradient()')}}</td>
   <td>{{Spec2('CSS3 Images')}}</td>
   <td>Initial definition.</td>
  </tr>
 </tbody>
</table>

<h2 id="Browser_compatibility">Browser compatibility</h2>

<p>{{CompatibilityTable}}</p>

<div id="compat-desktop">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Feature</th>
   <th>Chrome</th>
   <th>Firefox (Gecko)</th>
   <th>Internet Explorer</th>
   <th>Opera</th>
   <th>Safari (WebKit)</th>
  </tr>
  <tr>
   <td>Basic support (on {{cssxref("background")}} and {{cssxref("background-image")}})</td>
   <td>10 {{property_prefix("-webkit")}}</td>
   <td>{{CompatGeckoDesktop("1.9.2")}}{{property_prefix("-moz")}}<br />
    {{CompatGeckoDesktop("16")}}<sup>[1]</sup></td>
   <td>10</td>
   <td>12 {{property_prefix("-o")}}<br />
    12.5</td>
   <td>5.1 {{property_prefix("-webkit")}}</td>
  </tr>
  <tr>
   <td>On {{cssxref("border-image")}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatGeckoDesktop("29")}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
  </tr>
  <tr>
   <td>On any other property that accept {{cssxref("&lt;image&gt;")}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
  </tr>
  <tr>
   <td>Interpolation hints (a percent without a color)</td>
   <td>40</td>
   <td>{{CompatGeckoDesktop("36")}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
  </tr>
 </tbody>
</table>
</div>

<div id="compat-mobile">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Feature</th>
   <th>Android</th>
   <th>Firefox Mobile (Gecko)</th>
   <th>IE&nbsp;Phone</th>
   <th>Opera Mobile</th>
   <th>Safari Mobile</th>
  </tr>
  <tr>
   <td>Basic support (on {{cssxref("background")}} and {{cssxref("background-image")}})</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
  </tr>
  <tr>
   <td>On {{cssxref("border-image")}}</td>
   <td>{{CompatGeckoMobile("29")}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
  </tr>
  <tr>
   <td>On any other property that accept {{cssxref("&lt;image&gt;")}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
  </tr>
 </tbody>
</table>
</div>

<p>[1] Before Firefox 36, Gecko didn't apply gradient on the pre-multiplied color space, leading to shade of grey unexpectedly appearing when used with transparency. Since Firefox 42, the prefixed version of gradients can be disabled by setting <code>layout.css.prefixes.gradients</code> to <code>false</code>.</p>

<h2 id="See_also">See also</h2>

<ul>
 <li><a href="/en-US/docs/Web/Guide/CSS/Using_CSS_gradients">Using gradients</a>, {{cssxref("repeating-linear-gradient")}}, {{cssxref("radial-gradient")}}</li>
 <li>WebKit's original proposal: <a class="external" href="https://webkit.org/blog/175/introducing-css-gradients/">https://webkit.org/blog/175/introducing-css-gradients/</a></li>
 <li><a class="external" href="https://msdn.microsoft.com/en-us/library/ms532997(VS.85,loband).aspx">MSDN library, gradient filter</a> (reference doc)</li>
</ul>
Revert to this revision