Transparencia a un color declarado como variable en CSS
Una tarea común en el diseño es aplicar transparencia a un color, y con técnicas más actuales, colores definidos como variable. Esto puede lograrse con pre-procesadores CSS y nativamente utilizando combinaciones de sintaxis modernas como rgba(), hsla() y otros ya soportados ampliamente. Este artículo explica cómo manejar esta necesidad técnica con ejemplos prácticos.
Definir Variables de Color en CSS⌗
Las variables CSS se declaran dentro de un selector, generalmente :root
para que estén disponibles globalmente:
:root {
--color-principal: #3498db; /* Azul claro */
}
Esta declaración permite reutilizar --color-principal
en cualquier lugar del código.
La transparencia en CSS⌗
Para agregar transparencia a un color, CSS ofrece funciones como:
- rgba(): Permite especificar colores en el formato RGB con un canal alfa para controlar la opacidad:
color: rgba(52, 152, 219, 0.5); /* color azul con 50% de opacidad */
- hsla(): Similar a
rgba()
, pero usa el modelo de color HSL (Hue, Saturation, Lightness):
color: hsla(204, 70%, 53%, 0.5); /* azul con 50% de opacidad */
Como notarás, para definir colores utilizando rgba() y hsla() necesitas convertir la variable en hexacromía, lo que implica un nuevo impedimento. Pero encontré una propiedad que soluciona mi problema a la perfección:
La función color-mix()⌗
A partir de CSS Color Module Level 5, color-mix()
permite mezclar colores en hexacromía declarados como variables directamente con transparencia:
:root {
--color-principal: #3498db;
}
.elemento {
background-color: color-mix(in srgb, var(--color-principal) 50%, transparent); /* variable CSS con 50% de opacidad */
}
Links:⌗
- Soporte de navegadores de CSS color-mix en Can I Use