Texto arcoíris en CSS
EstilosTodo se ejecuta en tu navegador: no se sube nada
La forma estándar de conseguir texto arcoíris es `background-clip: text`: se pone un degradado detrás del texto y se recorta con la forma de las letras. Tres declaraciones, todas necesarias, y que falte cualquiera se ve como «no ha funcionado en absoluto». `background-image` es el degradado; `background-clip: text` (junto con su versión con prefijo `-webkit-`) recorta el fondo a la forma del texto; `color: transparent` aparta el color original de las letras. Sin la segunda ves un rectángulo de degradado encima de las palabras; sin la tercera, el color del texto tapa el degradado por completo. ¿Y por qué no un color por letra? Colorear letra a letra exige envolver cada una en un `<span>`, es decir, tocar la estructura HTML; y el contrato de estos generadores es devolver un trozo de CSS, ya que el texto de la vista previa lo escribe la página y el módulo no tiene acceso al DOM ni debería tenerlo. `background-clip: text` es la respuesta estándar, con una ventaja añadida: el resultado es una regla CSS con un nombre de clase que sirve para cualquier encabezado, mientras que la solución del span hay que rehacerla cada vez que cambia el texto. El degradado en sí puedes afinarlo en el generador de degradados. ⚠️ El texto tiene que quedarse en el propio elemento: `background-clip` recorta el fondo de ese elemento, y el texto dentro de un elemento hijo queda fuera del recorte. Así que no escribas `<h1 class="rainbow-text"><span>Título</span></h1>`.
Funciones
- Un degradado arcoíris recortado a la forma del texto con `background-clip: text`; el resultado es una regla CSS
- Entre dos y doce bandas de color, con las posiciones de parada escritas en porcentaje, así que la colocación es determinista
- Direcciones: de izquierda a derecha, de arriba abajo, diagonal 135° y de derecha a izquierda
- Saturación y luminosidad ajustables, así que tanto un diseño claro como uno oscuro encuentran su ajuste
- Se incluyen las declaraciones con prefijo `-webkit-`, de modo que Safari y Chrome antiguos también lo dibujan
- La vista previa se actualiza en vivo; copia cuando te convenza
- El resultado lleva el selector `.rainbow-text`, listo para pegar en una hoja de estilos
- Todo se ejecuta en tu navegador y tu texto no se sube
Cómo se usa
- Escribe unos caracteres en la casilla de arriba
- Elige la dirección del degradado y cuántas bandas de color
- Ajusta la saturación y la luminosidad hasta acertar con el peso
- Copia el CSS sobre tu encabezado
Preguntas frecuentes
- ¿Por qué veo un rectángulo de color sobre las palabras, o las palabras no se ven?
- Los dos casos vienen de una declaración que falta, y por motivos opuestos. Un rectángulo de color significa que el fondo no se recortó a la forma del texto: falta la declaración `background-clip` (incluida la versión con prefijo `-webkit-`, la única que respetan Safari y Chrome antiguos). Texto invisible significa que el color de las letras no se apartó: falta `color: transparent`, así que un color opaco se pone sobre el degradado y la zona parece vacía. La regla completa que aparece arriba los incluye todos.
- ¿Por qué no colorear cada letra por separado?
- Porque colorear letra a letra obliga a envolver cada carácter en un `<span>`, o sea, a modificar la estructura HTML. Estos generadores devuelven un trozo de CSS: el texto de la vista previa lo escribe la página con `textContent`, y el módulo no tiene acceso al DOM ni debería tenerlo. `background-clip: text` es la respuesta estándar, y además su resultado dura más: una regla CSS con un nombre de clase funciona en cualquier encabezado, mientras que la solución del span hay que rehacerla cada vez que cambia el texto o cuando el contenido viene de un gestor.
- He envuelto el texto en un span y ha desaparecido el color. ¿Por qué?
- Porque el texto tiene que quedarse en el elemento que lleva la clase. `background-clip: text` recorta el fondo del propio elemento, y el texto dentro de un hijo queda fuera del recorte, así que conserva su color; y `color: transparent` tampoco ayuda, porque lo que falta es el fondo del padre bajo esos glifos. Así que `<h1 class="rainbow-text">Título</h1>` es correcto, y añadir un `<span>` dentro no lo es.
Herramientas relacionadas
Texto de neón
EstilosAjusta el color y la intensidad, mira el texto de neón al momento y copia el CSS. Varias capas de text-shadow forman el halo, sobre fondo oscuro.
Texto con efecto glitch
EstilosAjusta color e intensidad, mira el efecto glitch al momento y copia el CSS. Dos copias desalineadas con tiras recortadas, e instrucciones del data-text.
Generador de degradados CSS
EstilosAjusta ángulo, colores y forma, mira la previa al momento y copia el CSS. Lineal, radial y cónico, con parada intermedia opcional.
Generador de border-radius
EstilosAjusta el radio de las cuatro esquinas, prévisualo al momento y copia el CSS. Con px, rem y porcentaje: en una caja no cuadrada el porcentaje da elipse.
Generador de glassmorphism
EstilosAjusta desenfoque, opacidad, saturación y borde, mira el vidrio esmerilado al momento y copia el CSS, con el prefijo -webkit- para iOS.
Generador de neumorphism
EstilosAjusta distancia, desenfoque, intensidad y dirección, mira el neumorphism al momento y copia el CSS. Las dos sombras se derivan del fondo, mismo tono.