La función CSS radial-gradient()
crea una imagen (<image>
) que representa un gradiente (degradado) de colores, generando un radio desde un origen, el centro (center) del gradiente. El resultado de esta función es un objeto de tipo de dato CSS <gradient>
.
Los gradientes radiales son definidos por su centro (center), el contorno y posición de la figura resultante y los puntos de definición de color (color stops). El gradiente radial consiste, desde su centro hasta su figura resultante y potencialmente más allá, en figuras concénctricas sucesivas de escala uniforme, idénticas en su figura final. Los stops de color son posicionados en un rayo de gradiente virtual que va horizontalmente desde el centro hacia la derecha. La proporción para posicionar los stops de colores es relativa a la intersección entre la figura final y su rayo de gradiente, representando el 100%
. Cada figura es monocolor, y definida por el color del rayo de gradiente al que cruza.
Las figuras resultantes solo pueden ser círculos (circle
) o elipses (ellipse
).
Como cualquier otro gradiente, un gradiente radial CSS no es un <color>
CSS, sino una imagen sin dimensiones intrínsecas, es decir, no tiene un tamaño natural o predefinido, ni radio. Su tamaño concreto coincidirá con el del elemento al que se aplica.
La función radial-gradient
no permite gradientes repetidos. Para dicha funcionalidad, use la función CSS repeating-radial-gradient
.
Sintáxis
// Definición de la figura radial-gradient( circle, … ) /* Sinónimo de radial-gradient( circle farthest-corner, … ) */ radial-gradient( ellipse, … ) /* Sinónimo de radial-gradient( ellipse farthest-corner, … ) */ radial-gradient( <extent-keyword>, … ) /* Dibuja un círculo */ radial-gradient( circle radius, … ) /* Un círculo centrado con longitud dada. Puede ser un porcentaje */ radial-gradient( ellipse x-axis y-axis, … ) /* Los dos ejes semi-mayores son indicados, horizontal y después vertical */ // Definición de la posición de la figura radial-gradient ( … at <position>, … ) // Definición de los stops de colores radial-gradient ( …, <color-stop>, … ) radial-gradient ( …, <color-stop>, <color-stop> )
Valores
<position>
- Una posición (
<position>
), interpretada de la misma forma quebackground-position
otransform-origin
. Si es omitida, su valor predeterminado escenter
. <shape>
- La figura del gradiente. Puede ser un valor
circle
(que indica que la figura del gradiente es un círculo con radio constante) oellipse
(que indica que la figura del gradiente es una elipse alineada por ejes). El valor predeterminado esellipse
. <color-stop>
- Representa un color fijo en una posición precisa, su valor está compuesto por un valor
<color>
, seguido por una posición opcional (que puede ser de tipo<percentage>
o<length>
a lo largo del rayo de gradiente). Un porcentaje de0%
, o una longitud de0
, representan el centro del gradiente, mientras que el valor de100%
representa la intersección de la figura final con el rayo virtual de gradiente. Los valores porcentuales internos son posicionados linealmente en el rayo gradiente. <extent-keyword>
- Valores clave que describen la longitud de la figura resultante. Los valores posibles son:
-
Constante Descripción closest-side
La figura resultante coincide con el lado de la caja más cercano al centro (para los círculos) o coincide con los lados vertical y horizontal más cercanos al centro (en caso de elipses). closest-corner
El tamaño de la figura resultante coincide exactamente con la esquina de la caja más cercana desde el centro del gradiente. farthest-side
Similar a closest-side, excepto que el tamaño de la figura resultante coincide con el lado de la caja más lejano al centro (o los lados vertical y horizontal). farthest-corner
El tamaño de la figura resultante coincide exactamente con la esquina de la caja más lejana al centro del gradiente. cover
ycontain
) como sinónimos de los estándaresfarthest-corner
yclosest-side
respectivamente. Use solo las palabras clave estándar, pues algunas implementaciones ya no soportan las variantes anteriores.
Sintáxis formal
radial-gradient(
[ [ circle || <length>
] [ at <position>
]? , |
[ ellipse || [ <length> | <percentage>
]{2} ] [ at <position> ]? , |
[ [ circle | ellipse ] || <extent-keyword> ] [ at <position> ]? , |
at <position> ,
]?
<color-stop> [ , <color-stop> ]+
)
where <extent-keyword> = closest-corner | closest-side | farthest-corner | farthest-side
and <color-stop> = <color> [ <percentage> | <length> ]?
Ejemplo 1
Usando el siguiente código CSS podemos obtener un fondo de elipse en la esquina más lejana (farthest-corner
) a 45px 45px
, cambiando el color de turquesa (#00FFFF
), a blanco, a azul (#0000FF
):
body { width: 100vh; height: 100vh; background-image: radial-gradient(ellipse farthest-corner at 45px 45px , #00FFFF 0%, rgba(0, 0, 255, 0) 50%, #0000FF 95%); }
Ejemplo 2
Este código generará un fondo de elipse in la esquina más lejana (farthest-corner
) a 470px 45px
, cambiando el color de amarillo (#FFFF80
), a marrón pálido, a azul pálido (#E6E6FF
):
body { width: 100vh; height: 100vh; background-image: radial-gradient(ellipse farthest-corner at 470px 47px , #FFFF80 20%, rgba(204, 153, 153, 0.4) 30%, #E6E6FF 60%); }
Ejemplo 3
Este código generará un fondo de elipse en la esquina más lejana (farthest-corner
) a 45px 45px
, cambiando el color de rojo (#FF0000
) a azul (#0000FF
):
body { width: 100vh; height: 100vh; background-image: radial-gradient(farthest-corner at 45px 45px , #FF0000 0%, #0000FF 100%); }
Ejemplo 4
Este código producirá un círculo difuso con radio de 16px
:
body { width: 100vh; height: 100vh; background-image: radial-gradient(16px at 60px 50% , #000000 0%, #000000 14px, rgba(0, 0, 0, 0.3) 18px, rgba(0, 0, 0, 0) 19px); }
Especificaciones
Especificación | Estado | Comentarios |
---|---|---|
CSS Image Values and Replaced Content Module Level 3 The definition of 'radial-gradients()' in that specification. |
Candidate Recommendation | Definición inicial |
Compatibilidad de navegadores
Característica | Firefox (Gecko) | Chrome | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Soporte básico (en background y background-image ) |
3.6 (1.9.2)-moz[1] 16 (16) |
10.0 (534.16)-webkit[2] | 10.0[3] | 11.60-o | 5.1-webkit[2] |
En border-image |
29 (29) | (Yes) | (Yes) | (Yes) | (Yes) |
En cualquier propiedad que acepte el tipo <image> |
No support | (Yes) | (Yes) | (Yes) | (Yes) |
Sintáxis anterior de webkit | No support | 3-webkit[2] | No support | No support | 4.0-webkit[2] |
Sintáxis de at (sintáxis estándar final) |
10 (10)-moz[1] 16 (16)[4] |
26 | 10.0 | 11.60-o[2] 2.12 |
No support |
Consejos de interpolación (un porcentaje sin color) | 36 (36) | 40 | 27 |
Característica | Android | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Soporte básico (en background y background-image ) |
(Yes) | 1.0 (1.9.2)-moz[1] 16.0 (16) |
10 | (Yes) | (Yes) |
En border-image |
(Yes) | 29.0 (29) | (Yes) | (Yes) | (Yes) |
En cualquier propiedad que acepte el tipo <image> |
No support | (Yes) | (Yes) | (Yes) | (Yes) |
Sintáxis anterior de webkit | ? | No support | ? | ? | ? |
Sintáxis de at (sintáxis estándar final) |
? | 10.0 (10)-moz[1] 16.0 (16) |
10 | ? | ? |
[1] Implementado en Firefox 3.6 usando prefijo, y sintáxis anterior. Antes de Firefox 36, Gecko no aplicaba gradientes en espacios de color premultiplicado, provocando que apareciera una sombra gris cuando se usaba con transparencia. Desde Firefox 42, la versión con prefijo puede ser deshabilitada estableciendo la opción layout.css.prefixes.gradients
en false
.
[2] Implementado en WebKit usando prefijo, y sintáxis anterior. WebKit desde la versión 528 soporta la función anterior -webkit-gradient(radial,…)
. Véase también su soporte actual para gradientes radiales.
[3] Internet Explorer 5.5 a 9.0 soporta la propiedad exclusiva filter: progid:DXImageTransform.Microsoft.Gradient()
filter.
[4] Además del soporte sin prefijo, Gecko 44.0 (Firefox 44.0 / Thunderbird 44.0 / SeaMonkey 2.41) incluye soporte para una versión con prefijo -webkit
de la función, por razones de compatibilidad, dentro de la opción layout.css.prefixes.webkit
, con valor false
de forma predeterminada. Desde Gecko 49.0 (Firefox 49.0 / Thunderbird 49.0 / SeaMonkey 2.46) el valor predeterminado de esa opción es true
.
Véase también
- Usando gradientes con CSS,
repeating-radial-gradient
,linear-gradient
- Propuesta original de WebKit: https://webkit.org/blog/175/introducing-css-gradients/
- Nueva implementación de WebKit: https://webkit.org/blog/1424/css3-gradients/