CSS y web

Texto con degradado en CSS, bien hecho

Tres líneas de CSS ponen un degradado dentro de tus letras. Hacerlo legible, robusto y con gusto lleva unas cuantas más, y saber cuándo dejar el texto liso.

GradientlyCuenta verificada de Gradiently··6 min de lectura
Portada: Mistral Reel · GR·SXXT·96

La versión corta

  • El texto con degradado en CSS funciona pintando un degradado como fondo del elemento, recortándolo con la forma de las letras mediante background-clip: text y haciendo transparente el color del texto.
  • Define siempre primero un color de texto liso y aplica el color transparente solo dentro de una comprobación @supports, para que las palabras nunca desaparezcan.
  • Cada parte del degradado necesita suficiente contraste con el fondo, así que comprueba los puntos más claro y más oscuro, no solo uno.
  • El texto con degradado va bien en líneas cortas de titular a tamaños grandes y funciona mal para el texto de cuerpo, los enlaces y las etiquetas pequeñas.
  • Añadir box-decoration-break: clone da a cada línea de un elemento en línea partido en varias líneas su propio degradado completo.
En esta página

El texto con degradado en CSS se hace pintando un degradado como fondo del elemento de texto, recortando ese fondo con la forma de las letras mediante background-clip: text y haciendo transparente el propio texto para que se vea el degradado. Lleva tres declaraciones, funciona en todos los navegadores actuales y sigue siendo texto real, seleccionable y que se puede buscar, no una imagen.

css
.gradient-text {
  background-image: linear-gradient(90deg, #6d28d9, #be185d);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
La técnica básica. La línea con prefijo mantiene contentas las versiones antiguas de Safari y Chromium.
De violeta a rosa, para páginas claraslinear-gradient(90deg, #6d28d9, #be185d)
El degradado dentro de esas letras. Ambos extremos son lo bastante oscuros para leerse sobre blanco.

El resto de esta guía trata de lo que hace mal la versión de tres líneas: alternativas que faltan, contraste, texto en varias líneas, descendentes recortados y la cuestión de diseño de cuándo ayuda siquiera el texto con degradado. Para el aspecto de las letras con degradado en redes y trabajo de marca, no en la web, mira los efectos de texto.

Una receta robusta de texto con degradado con alternativas

Si un navegador aplica color: transparent pero no el recorte, el texto desaparece. Protégete: dale al elemento un color liso sacado del degradado y pasa a la versión transparente solo cuando el navegador confirme que la admite. Añade un restablecimiento para el modo de colores forzados, donde el sistema sustituye tus colores y el texto debe seguir visible.

css
.gradient-text {
  color: #6d28d9; /* solid fallback from the gradient */
}

@supports (background-clip: text) or (-webkit-background-clip: text) {
  .gradient-text {
    background-image: linear-gradient(90deg, #6d28d9, #be185d);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
  }
}

@media (forced-colors: active) {
  .gradient-text {
    background: none;
    color: CanvasText;
  }
}
Primero un color liso, degradado solo donde se admita y un color del sistema cuando la persona fuerza los suyos.

La página de MDN sobre background-clip documenta el valor text y su compatibilidad actual.

Contraste: comprueba los dos extremos del degradado

Un comprobador de contraste toma un solo color de texto, pero el texto con degradado tiene muchos. Las palabras son tan legibles como su parte más débil, así que comprueba el punto más claro y el más oscuro frente al fondo, y mira también el medio, porque una mezcla sRGB puede quedar más clara o más apagada que cualquiera de los extremos. Para texto grande de titular, WCAG pide al menos 3:1; para texto normal, 4,5:1. El contraste de color explica las relaciones.

Degradados de texto cuyos puntos superan todos 5:1 sobre el fondo indicado. Sobre blanco, cada punto mide más de 5:1; sobre #0b0b12, más de 7:1.

Arreglar el texto con degradado en varias líneas y las letras recortadas

En un elemento en línea que se parte, el navegador extiende un solo fondo por todas las líneas como si fueran una única tira, así que la primera línea recibe el comienzo del degradado y la última el final. Normalmente quieres que cada línea lleve el degradado completo. box-decoration-break: clone lo consigue. En elementos de bloque, como un título, el degradado ya abarca toda la caja, así que un degradado largo en un título ancho puede mostrar solo su parte central en las líneas cortas.

css
.gradient-text {
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
  /* stop descenders being cut off */
  line-height: 1.15;
  padding-block-end: 0.08em;
}
Cada línea recibe su propio degradado completo y las colas de g, j, p e y quedan dentro del área pintada.

Los descendentes recortados son la otra sorpresa. El fondo solo pinta la caja del elemento, así que con un line-height muy ajustado, las partes de las letras que cuelgan por debajo quedan transparentes y desaparecen. Una altura de línea de aproximadamente 1,1 o un poco de padding inferior lo arregla. Las tipografías de titular en cursiva pueden perder la punta de su última letra por la derecha por el mismo motivo; un toque de padding en línea ayuda.

Cuándo funciona el texto con degradado y cuándo no

Evita

  • Texto de cuerpo, donde el cambio de color ralentiza la lectura
  • Enlaces y botones, donde el color indica el estado
  • Etiquetas pequeñas de menos de unos 24px, donde el degradado ni se ve
  • Degradados arcoíris con cinco o más tonos
  • Texto con degradado sobre un fondo degradado

Úsalo para

  • Una palabra o frase corta en un titular grande
  • El nombre de un producto o marca en un hero
  • Números grandes en un bloque de estadísticas
  • Dos o tres tonos relacionados de luminosidad parecida
  • Fondos lisos y serenos que dejen liderar a las letras

Una buena regla: el texto con degradado es un acento, como la cursiva. Una palabra resaltada en un titular llama la atención; un párrafo entero de ello la cansa. Los pesos gruesos ayudan, porque los trazos finos no muestran suficiente color para leerse como degradado. Si el resto de la página ya usa fondos degradados, la tipografía plana suele ser la opción más fuerte; el texto sobre fondos degradados cubre ese caso.

Animar el texto con degradado

Para que el color fluya por las letras, haz el fondo más grande que el texto y muévelo. Dale un 200% de ancho y anima background-position de ida y vuelta con alternate, para que nunca haya un salto cuando el bucle se reinicia. Respeta los ajustes de movimiento reducido y mantenlo lento: un destello cada pocos segundos se lee como acabado cuidado, un ciclo rápido se lee como una advertencia.

css
.gradient-text--flow {
  background-image: linear-gradient(90deg, #6d28d9, #be185d, #c2410c);
  background-size: 200% 100%;
  animation: flow 6s ease-in-out infinite alternate;
}

@keyframes flow {
  from { background-position: 0% 50%; }
  to   { background-position: 100% 50%; }
}

@media (prefers-reduced-motion: reduce) {
  .gradient-text--flow { animation: none; }
}
El color yendo y viniendo por las palabras. Combínalo con el recorte y la alternativa de la receta de arriba.

Los mismos trucos de fondo dan vida a los degradados animados en CSS en general, y los contornos con degradado, en lugar de rellenos, se tratan en los bordes con degradado en CSS.

Preguntas frecuentes

¿Cómo hago texto con degradado en CSS?

Define un degradado como background-image, añade -webkit-background-clip: text y background-clip: text y pon color: transparent. Pon un color liso fuera de una comprobación @supports como alternativa.

¿Por qué mi texto con degradado es invisible?

El texto es transparente pero el fondo no se está recortando, normalmente porque falta la declaración del recorte, está mal escrita o no se admite. Aplica color: transparent solo dentro de @supports (background-clip: text).

¿Es accesible el texto con degradado?

Puede serlo, si cada parte del degradado tiene suficiente contraste con el fondo y el texto sigue siendo texto real. Comprueba los puntos más claro y más oscuro y restablece los colores en el modo de colores forzados.

¿Por qué se cortan las partes de abajo de mis letras?

El fondo recortado solo cubre la caja del elemento, así que una altura de línea ajustada deja los descendentes fuera de ella. Sube la altura de línea a aproximadamente 1,1 o añade un poco de padding inferior.

¿Puedo usar texto con degradado en correos?

La compatibilidad con background-clip: text es irregular entre los clientes de correo, así que usa allí un color liso o una imagen con texto alternativo. Mira los degradados en el correo.

Compartir esta guía

Escrito por GradientlyCuenta verificada de Gradiently

El equipo detrás de Gradiently, una herramienta de diseño creada en torno a los Marks: degradados vivos que hacen que todo lo que diseñas parezca tuyo.

Ver nuestro perfil