Una guía completa para los degradados CSS
Los degradados CSS suelen ser un color que se desvanece en otro, pero CSS te permite controlar cada aspecto de cómo sucede eso, desde la dirección y la forma hasta los colores y cómo pasan de uno a otro. De hecho, existen tres tipos de degradados: lineal , radial y cónico . Aquí está la sintaxis básica de cada uno:
/* Basic linear CSS gradient examples */background-image: linear-gradient(#ff8a00, #e52e71);background-image: linear-gradient(to right, violet, darkred, purple);background-image: linear-gradient(40deg, rgb(255 0 0) 60%, orange);/* Basic radial CSS gradient examples */background-image: radial-gradient(#ff8a00, #e52e71);background-image: radial-gradient(circle at top right, #ff8a00, red, #e52e71);/* Basic conic CSS gradient examples */background-image: conic-gradient(#ff8a00, #e52e71);background-image: conic-gradient(red 50deg, yellow 100deg, lime 200deg, aqua, blue, magenta, red);
Tabla de contenido
- gradientes lineales
- gradientes radiales
- gradientes cónicos
- Degradados repetidos
- ¡Trucos!
- Accesibilidad
- Especificación
- Propiedades relacionadas
Degradados CSS lineales
Quizás el tipo de CSS degradado más común que vemos en el diseño web sea el linear-gradient()
. Se llama “lineal” porque los colores fluyen de izquierda a derecha, de arriba a abajo o en cualquier ángulo que elijas en una sola dirección.
Sintaxis
La sintaxis se declara en la propiedad background
(taquigrafía) o background-image
en CSS. Se lee así en inglés sencillo:
Cree una imagen de fondo que sea un degradado lineal que se mueve [en esta dirección o en este ángulo] y comienza con [un color] y termina con [otro color] .
La sintaxis oficial se parece más a esto:
linear-gradient( [ angle | to side-or-corner ]? , color-stop-list)side-or-corner = [to left | to right] || [to top | to bottom]
uso
Comenzamos con el ejemplo más básico, un CSS degradado de dos colores que va de arriba a abajo:
.gradient { background-image: linear-gradient(#ff8a00, #e52e71);}
Bonito, ¿verdad? Observe que no declaramos el ángulo en el ejemplo anterior. CSS asumirá to bottom
en ese escenario, ¿dónde #ff8a00
está el color inicial que pasa al siguiente color #e52e71
?
Podríamos haber escrito lo mismo de otras dos maneras:
/* Explicitly declare the direction */background-image: linear-gradient(to bottom, #ff8a00, #e52e71);/* Explicitly declare the angle, in degrees */background-image: linear-gradient(180deg, #ff8a00, #e52e71);
Cambiando de dirección
Para hacer que el gradiente CSS vaya de izquierda a derecha, pasó un parámetro adicional al comienzo de la linear-gradient()
función, comenzando con la palabra to
que indica la dirección. Dividamos el valor de la propiedad en líneas separadas para que sea más fácil ver qué está pasando.
.gradient { background-image: linear-gradient( to right, #ff8a00, #e52e71 );}
¡Genial, ahora los colores pasan del borde izquierdo al borde derecho del elemento!
Esta to
sintaxis también funciona para las esquinas. Por ejemplo, si quisieras que el eje del degradado comenzara en la esquina inferior izquierda y llegara a la esquina superior derecha, podrías decir to top right
:
.gradient { background-image: linear-gradient( to top right, #ff8a00, #e52e71 );}
Si ese cuadro fuera de un cuadrado perfecto, el ángulo del degradado habría sido 45deg
, pero como no lo es, no lo es. Si desea asegurarse de que sea 45deg
, puede declarar el ángulo exacto, eliminando únicamente to
la sintaxis:
.gradient { background-image: linear-gradient( 45deg, #ff8a00, #e52e71 );}
Múltiples colores
¡No estamos limitados a solo dos colores! De hecho, podemos tener tantos colores separados por comas como queramos. Aquí hay cuatro:
.gradient { background-image: linear-gradient( to right, red, #f06d06, rgb(255, 255, 0), green );}
Soporte del navegador
Estos datos de soporte del navegador son de Caniuse, que tiene más detalles. Un número indica que el navegador admite la función en esa versión y superiores.
Escritorio
cromo | Firefox | ES DECIR | Borde | Safari |
---|---|---|---|---|
10* | 36 | 10 | 12 | 15.4 |
Móvil/Tableta
androidcromo | Android Firefox | androide | Safari en iOS |
---|---|---|---|
124 | 125 | 4* | 15.4 |
Artículos relacionados
Lo que hay que saber sobre los degradados y el “negro transparente”
Chris Coyier
Crea fondos rayados con degradados (y una mezcla descarada)
gatito giraudel
Facilitar los gradientes lineales
Andreas Larsen
Radiales CSS degradados
Un gradiente radial se diferencia de un gradiente lineal en que comienza en un solo punto y emana hacia afuera. Los degradados CSS se utilizan a menudo para simular una fuente de luz, que sabemos que no siempre es recta. Esto hace que las transiciones entre colores en un degradado radial parezcan aún más naturales.
Sintaxis
La radial-gradient()
notación se utiliza en la propiedad background
o background-image
en CSS. Esto tiene mucho sentido si registramos que los degradados son básicamente el CSS para crear imágenes que de otro modo crearíamos en un software de edición de imágenes y las colocaríamos en una background
propiedad de todos los modos.
La sintaxis oficial es la siguiente:
radial-gradient( [ ending-shape || size ]? [ at position ]? , color-stop-list);
Podría resultar un poco útil traducirlo al inglés básico:
¡Oye, elemento! Pinte un degradado radial de alguna forma y de algún tamaño que se ubica en estas posiciones . Ah, y asegúrese de que comience con este color y termine en este color .
Valores
La radial-gradient
notación acepta los siguientes valores:
shape
: Determina la forma que sigue el degradado al realizar la transición hacia afuera, de un color al siguiente. Como estamos hablando de degradados radiales, las formas se limitan a ser de naturaleza circular. Podemos omitir este valor y la notación medirá las longitudes de los lados del elemento para determinar si un valor se adapta mejor a la situación. Por ejemplo, un elemento que sea un cuadrado perfecto sería una excelente combinación,circle
mientras que cualquier elemento rectangular está listo para usarellipse
.circle
ellipse
size
: Influye en la forma final del degradado tomando elshape
valor e indicando dónde debe terminar el degradado según el centro de la forma. Esto se puede expresar por nombre o por una medida exacta de longitud.closest-side
: El degradado terminará en el lado más cercano al centro de la forma. Si dos partes coinciden con este criterio, se distribuirá equitativamente.farthest-side
(predeterminado): Lo opuesto aclosest-side
, donde el degradado terminará en el lado más alejado del centro de la forma.closest-corner
: El degradado terminará en la esquina que coincide como la más cercana al centro de la forma.farthest-corner
: Lo opuesto aclosest-corner
, donde el degradado termina en la esquina más alejada del centro de la forma.radius
: Podemos especificar un valor numérico que sirva como radio del círculo. Esto debe indicarse en píxeles positivos o unidades relativas. Lo sentidos, no se permiten unidades ni porcentajes negativos porque un círculo negativo sería un vacío y los porcentajes pueden ser relativos a cualquier número de valores circundantes.or percentage
: Se puede proporcionar un segundo valor numérico para declarar el tamaño explícito de una elipse, pero no de un círculo. Nuevamente, los valores negativos son un no-no, pero los porcentajes son un juego limpio ya que el tamaño es relativo al cuadro de degradado en lugar del elemento.
position
: Esto funciona de forma muy parecida a como lo hace enbackground-position
. Eso significa quetop
,right
,left
ycenter
todos funcionan aquí, así como combinaciones en las quetop center
se proporcionan dos valores con nombre (por ejemplo, ). También podemos especificar una posición exacta usando un valor numérico, incluido el porcentaje, todos los cuales son relativos al cuadro delimitador del elemento. El valor predeterminado escenter center
.color-stop
: Estos son valores de color que definen el degradado. Aquí se acepta cualquier valor de color, incluidos hexadecimal, con nombre, RGB y HSL.
uso
Así es como se ve quizás en su forma más básica. Tenga en cuenta que no declaramos los valores shape
, o que por defecto son valores que colocan el degradado en el centro del elemento y realiza una transición uniforme entre los valores de color declarados size
.position
color-stop
.gradient { background-image: radial-gradient( #ff8a00, #e52e71 );}
¿Busca más ejemplos de gradientes radiales? Patrick Brosset tiene muchos de ellos en su análisis profundo sobre gradientes radiales.
Cambiando forma
¿Ves cómo ese gradiente asume que shape
es ellipse
en los ejemplos anteriores? Esto se debe a que el elemento en sí no es un cuadrado perfecto. En ese caso, habría asumido un circle
lugar. ¡Muy inteligente! Esto es lo que sucedería si lo hubiéramos declarado explícitamente circle
como shape
valor:
.gradient { background-image: radial-gradient( circle, #ff8a00, #e52e71 );}
Cambiando de posición
Observe que el degradado en las demostraciones ha sido circular y se desvanece hasta el color final a lo largo del borde más alejado. Podemos declarar explícitamente el position
valor para asegurarnos de que el desvanecimiento termine en el “lado más cercano” del shape
lugar, así:
.gradient { background-image: radial-gradient( circle closest-side, #ff8a00, #e52e71 );}
Los valores posibles son: closest-corner
, closest-side
, farthest-corner
, y farthest-side
. Puedes pensar en ello como: “Quiero que este degradado radial se desvanezca desde el punto central hasta el [whichever side]
”, y el resto se completa para acomodar eso.
Un degradado radial tampoco tiene que comenzar en el centro predeterminado. Puede especificar un punto determinado utilizándolo at
como parte del primer parámetro, como:
.gradient { background-image: radial-gradient( circle at top right, #ff8a00, #e52e71 );}
Soporte del navegador
Estos datos de soporte del navegador son de Caniuse, que tiene más detalles. Un número indica que el navegador admite la función en esa versión y superiores.
Escritorio
cromo | Firefox | ES DECIR | Borde | Safari |
---|---|---|---|---|
10* | 36 | 10 | 12 | 15.4 |
Móvil/Tableta
androidcromo | Android Firefox | androide | Safari en iOS |
---|---|---|---|
124 | 125 | 4* | 15.4 |
Artículos relacionados
Recetas de gradiente radial
Chris Coyier
Todo sobre los gradientes radiales.
Chris Coyier
Degradados CSS cónicos
Un gradiente cónico es similar a un gradiente radial. Ambos son circulares y utilizan el centro del elemento como punto de origen para las paradas de color. Sin embargo, donde las paradas de color de un degradado radial emergen del centro del círculo, un degradado cónico las coloca alrededor del círculo.
Se llaman “cónicos” porque tienden a parecerse a la forma de un cono visto desde arriba. Bueno, al menos cuando se proporciona un ángulo distinto y el contraste entre los valores de color es lo suficientemente grande como para notar la diferencia.
Sintaxis
La sintaxis del gradiente cónico es más fácil de entender en inglés sencillo:
Haz un gradiente cónico que esté ubicado en [algún punto] que comience con [un color] en algún ángulo y termine con [otro color] en [algún ángulo]
Esta es la sintaxis oficial:
conic-gradient( [ from angle ]? [ at position ]?, angular-color-stop-list)
uso
En su nivel más básico, se ve así:
.gradient { background-image: conic-gradient( #ff8a00, #e52e71 );}
…donde se supone que la ubicación del degradado comienza en el centro del elemento ( 50% 50%
) y se distribuye uniformemente entre los dos valores de color.
Podríamos haber escrito esto de varias otras maneras, todas válidas:
.gradient { /* Original example */ background-image: conic-gradient(#ff8a00, #e52e71); /* Explicitly state the location center point */ background-image: conic-gradient(at 50% 50%, #ff8a00, #e52e71); /* Explicitly state the angle of the start color */ background-image: conic-gradient(from 0deg, #ff8a00, #e52e71); /* Explicitly state the angle of the start color and center point location */ background-image: conic-gradient(from 0deg at center, #ff8a00, #e52e71); /* Explicitly state the angles of both colors as percentages instead of degrees */ background-image: conic-gradient(#ff8a00 0%, #ff8a00, #e52e71); /* Explicitly state the angle of the starting color in degrees and the ending color by a full turn of the circle */ background-image: conic-gradient(#ff8a00 0deg, #e52e71 1turn);}
Si no especificamos un ángulo para los colores, se supone que el degradado se divide uniformemente entre los colores, comenzando 0deg
y terminando en 360deg
. Esto crea una “parada dura” donde los colores chocan entre sí en 0deg
y 360deg
. Si introducimos un tercer valor, eso crea un gradiente más suave y comenzamos a obtener esa perspectiva de aspecto de conocimiento.
.gradient { background-image: conic-gradient( #ff8a00, #e52e71, #ff8a00 );}
Podemos divertirnos con gradientes cónicos. Por ejemplo, podemos usarlo para crear el mismo tipo de patrón que podrías ver en un selector de color o en el infame indicador de pelota de playa giratoria de Mac:
.conic-gradient { background-image: conic-gradient( red, yellow, lime, aqua, blue, magenta, red );}
O probemos con un gráfico circular simple agregando paradas bruscas entre tres valores de color:
.gradient { background-image: conic-gradient( lime 40%, yellow 0 70%, red 0 );}
Soporte del navegador
Estos datos de soporte del navegador son de Caniuse, que tiene más detalles. Un número indica que el navegador admite la función en esa versión y superiores.
Escritorio
cromo | Firefox | ES DECIR | Borde | Safari |
---|---|---|---|---|
69 | 83 | No | 79 | 12.1 |
Móvil/Tableta
androidcromo | Android Firefox | androide | Safari en iOS |
---|---|---|---|
124 | 125 | 124 | 12.2-12.5 |
Artículos relacionados
CSS gradiente cónico() polifil
Chris Coyier
Patrones de fondo, simplificados por degradados cónicos
Ana Tudor
Degradados cónicos en CSS
Shankar Cabús
Mientras no mirabas, los degradados CSS mejoraron
Ana Tudor
Repetir gradientes CSS
La repetición de degradados requiere un truco que ya podemos hacer con el uso creativo de color-stops
las linear-gradient()
notaciones radial-gradient()
yy lo integra por nosotros. La idea es que podamos crear patrones a partir de los degradados que creamos y permitir que se repitan infinitamente.
Sintaxis
Hay tres tipos de gradientes repetidos, los tres actualmente compatibles con la especificación oficial y uno que se encuentra en el borrador de trabajo actual. La sintaxis de cada notación es la misma que la del tipo de gradiente relacionado. Por ejemplo, repeating-linear-gradient()
sigue la misma sintaxis que linear-gradient()
.
gradiente repetido | Notación relacionada | Ejemplo |
---|---|---|
repeating-linear-gradient |
linear-graadient |
repeating-linear-gradient(45deg, #ff8a00, #ff8a00 10px, #e52e71 10px, #e52e71 20px); |
repeating-radial-gradient |
radial-gradient |
repeating-radial-gradient(#ff8a00 0 8%, #e52e71 8% 16%); |
repeating-conic-gradient |
conic-gradient |
repeating-conic-gradient(from 0deg, #ff8a00 0deg 30deg, #e52e71 30deg 60deg); |
uso
Aquí hay un degradado lineal repetido que alterna entre dos colores cada 10 píxeles en un ángulo de 45 grados:
.gradient { background-image: repeating-linear-gradient( 45deg, #ff8a00, #ff8a00 10px, #e52e71 10px, #e52e71 20px );}
Podemos hacer el mismo tipo de cosas, pero con un gradiente radial. ¿La diferencia? Además de la notación en sí, estamos definiendo la forma y el punto de partida:
.gradient { background-image: repeating-radial-gradient( circle at 0 0, #ff8a00, #ff8a00 10px, #e52e71 10px, #e52e71 20px );}
¡Los gradientes cónicos no son muy diferentes! Nuevamente, la gran diferencia entre los gradientes radiales y cónicos es que los colores cónicos cambian alrededor del elemento, mientras que los colores en los gradientes radiales cambian desde el centro de la fuente del gradiente.
.gradient { background-image: repeating-conic-gradient( from 0deg, #ff8a00 0deg 30deg, #e52e71 30deg 60deg );}
Soporte del navegador
Esto es específicamente para gradientes repetidos lineales y radiales.
Estos datos de soporte del navegador son de Caniuse, que tiene más detalles. Un número indica que el navegador admite la función en esa versión y superiores.
Escritorio
cromo | Firefox | ES DECIR | Borde | Safari |
---|---|---|---|---|
10* | 3.6* | 10 | 12 | 5.1* |
Móvil/Tableta
androidcromo | Android Firefox | androide | Safari en iOS |
---|---|---|---|
124 | 125 | 4* | 5,0-5,1* |
Artículos relacionados
¿Por qué tenemos un “gradiente lineal repetido” de todos los modos?
Ana Tudor
Construyendo una superposición de cuadrícula CSS
Andreas Larsen
Hacer gráficos con CSS
Robin Rendle
¡Trucos!
Patrones
Vimos cómo los degradados pueden crear patrones interesantes cuando observamos los degradados repetidos. ¡Pero hay muchos otros patrones que podemos crear! Como tableros de ajedrez:
También podemos hacer un patrón de chevron repetido:
Chris tiene un fragmento que forma un patrón de papel cuadriculado:
Estos patrones están bien documentados en la web, pero consulta la galería de patrones de degradado CSS de Lea Verou para ver algunos ejemplos realmente alucinantes.
Degradados de frontera
¡Podemos crear bordes a partir de degradados!
Incluso podemos usar el truco del patrón para crear un efecto de borde divertido:
O bien, podemos poner límites estrictos para lograr un efecto de contenido superpuesto:
Degradados animados
Podemos usar background-position
tp para que parezca que la transición entre colores en un degradado se está moviendo.
Pero, como ocurre con cualquier animación, hay que tener en cuenta la accesibilidad, especialmente en aquellas que son sensibles al movimiento. Consulta la sección Accesibilidad para obtener más información.
¡Mira esta demostración de Marty! Este es un uso súper inteligente de gradientes radiales para simular la luz del sol según la posición del cursor del mouse.
Más trucos
Patrones de fondo creativos que utilizan degradados, formas CSS e incluso emojis
Preethi
Creación de cargadores Yin y Yang en la Web
Ana Tudor
Dibujar imágenes con degradados CSS
Jon Kantner
Subrayados del arco iris en movimiento
Chris Coyier
Uso de degradados cónicos y variables CSS para crear una salida de gráfico de anillos para una entrada de rango
Ana Tudor
El estado del cambio de degradados con transiciones y animaciones CSS
Ana Tudor
Metal cepillado con degradados CSS
Chris Coyier
Estilo de terminal antiguo
Chris Coyier
Accesibilidad
Los degradados CSS deben considerar el contraste entre los colores de fondo y de primer plano, tal como lo harías al trabajar con archivos background-color
. El truco consiste en asegurarse de que todos los colores utilizados en el degradado y las transiciones entre ellos no afecten la legibilidad de ningún contenido que se encuentre encima. Ahí es donde resulta útil utilizar un verificador de contraste.
¿Algo más a tener en cuenta? Animaciones. La transición entre dos colores de fondo sólidos, por ejemplo al pasar el ratón, no suele ser un problema. Pero si background-position
se usa para que parezca que un gradiente se está moviendo, entonces vale la pena considerar la prefers-reduced-motion
consulta de medios para que la animación se muestre a los usuarios adecuados.
Especificación
- Módulo de imágenes CSS nivel 3 (más reciente)
- Módulo de Imágenes CSS Nivel 3 (borrador del editor)
Propiedades relacionadas
fondo
.element { background: url(texture.svg) top center / 200px 200px no-repeat fixed #f8a100; }
Sara Cope
archivo adjunto de fondo
.hero { background-attachment: fixed; }
Chris Coyier
modo de fusión de fondo
.element { background-blend-mode: screen; }
Robin Rendle
color de fondo
element{ background-color: #ff7a18; }
Chris Coyier
imagen de fondo
.element { background: url(texture.svg); }
Chris Coyier
posición de fondo
.element { b
Deja un comentario