Formas de escribir un color en CSS
Cualquier propiedad que acepte un color (color, background-color, border-color, las sombras, el fill de SVG) acepta los mismos formatos. Las cuatro primeras muestras son el mismo azul escrito de cuatro formas, y la quinta es un color con nombre que se le parece:
| Formato | Ejemplo | Ideal para |
|---|---|---|
| Nombre | tomato, rebeccapurple | Pruebas rápidas y prototipos |
| Hex | #2563eb, #25e | Copiar desde herramientas de diseño |
rgb() | rgb(37 99 235) | Agregar transparencia, trabajar con valores RGB |
hsl() | hsl(221 83% 53%) | Crear tonos más claros y más oscuros de un color |
oklch() | oklch(55% 0.2 262) | Paletas con una luminosidad percibida uniforme |
| Palabras clave | transparent, currentColor | Mira las secciones de abajo |
Colores hex
Un color hex es # seguido del rojo, el verde y el azul con dos dígitos hexadecimales cada uno, de 00 a ff. Hay tres formas que son atajos o extensiones:
#rgb: cada dígito se duplica, así que#25ees#2255ee.#rrggbbaa: el último par es el alfa, así que#2563eb80es opaco en un 50% aproximadamente.#rgba: la forma corta con alfa.
Hex no distingue mayúsculas: #2563EB y #2563eb son el mismo color.
rgb() y rgba()
rgb() acepta rojo, verde y azul de 0 a 255 (o de 0% a 100%). Un cuarto valor opcional después de una barra es el alfa, de 0 (invisible) a 1, o de 0% a 100%.
color: rgb(37 99 235); /* modern space syntax */
color: rgb(37 99 235 / 50%); /* half transparent */
color: rgba(37, 99, 235, 0.5); /* older comma syntax, same result */
rgba() y rgb() ahora son la misma función: las dos aceptan ambas sintaxis y un alfa opcional. El código antiguo usa rgba() cuando necesita transparencia, y sigue funcionando.
hsl(): el formato más fácil de ajustar
hsl() describe un color como lo piensan las personas: un tono de la rueda de color, una saturación y una luminosidad. Mantén el tono y cambia la luminosidad para obtener toda una escala:
La primera fila mantiene el tono 221 y la saturación 83% y solo cambia la luminosidad. La segunda fila recorre la rueda de color con la misma saturación y luminosidad.
Transparencia: alfa vs opacity
Un canal alfa hace transparente un color. opacity hace transparente todo el elemento, incluidos el texto y los hijos:
transparent es una palabra clave para un negro totalmente transparente, rgb(0 0 0 / 0). Es el fondo por defecto de la mayoría de los elementos.
currentColor
currentColor es igual al color del propio elemento. Un botón cuyo borde, ícono y texto lo usan cambia todo con una sola declaración:
.button {
color: #16a34a;
border: 2px solid currentColor;
}
.button svg { fill: currentColor; }
Los bordes ya usan currentColor por defecto, y por eso border: 2px solid sin color coincide con el texto.
Prueba cualquier color
Escribe un color en cualquier formato. El navegador lo interpreta y muestra lo que calculó; un color inválido deja la muestra sin cambios.
Prueba tomato, #0f0, #2563eb80, rgb(0 0 0 / 25%), oklch(70% 0.15 150) y color-mix(in srgb, #2563eb, white 50%).
Funciones de color más nuevas
oklch(L C H): luminosidad, croma y tono en un espacio diseñado para que una misma luminosidad se vea igual de clara. Las paletas creadas con él tienen menos pasos intermedios apagados que las de HSL.color-mix(in srgb, A, B 30%): mezcla dos colores. Conwhiteoblackcrea tonos más claros y más oscuros a partir de un solo color de marca, y funciona con variables CSS:color-mix(in srgb, var(--brand), white 80%).
Las dos funcionan en las versiones actuales de Chrome, Firefox y Safari. Guarda los colores de marca en variables CSS para que los formatos que elijas vivan en un solo lugar.
Errores comunes
- Olvidar el
#en un color hex.color: 2563ebes inválido y se ignora. - Usar
opacitypara hacer transparente un fondo. También desvanece el texto. Usa un color con alfa. - Mezclar separadores en la sintaxis moderna.
rgb(37 99, 235)es inválido: usa solo espacios o solo comas. - Suponer que un color con nombre coincide con tu diseño.
royalblueno es#2563eb. Copia el código exacto. - Juzgar el contraste a ojo. Comprueba los colores del texto contra su fondo con un verificador de contraste; 4.5:1 es el mínimo para el texto del cuerpo.
Preguntas frecuentes
¿Qué formatos de color admite CSS?
Colores con nombre (red), hex (#ff0000), rgb(), hsl(), hwb(), lab(), lch(), oklab(), oklch() y color(), además de las palabras clave transparent y currentColor. Hex, rgb y hsl cubren casi todo el trabajo diario.
¿Qué diferencia hay entre rgb y rgba?
Ya ninguna. rgba() es un alias antiguo: el CSS actual permite que rgb() lleve un valor alfa (rgb(37 99 235 / 50%)), y las dos funciones aceptan los mismos argumentos en todos los navegadores actuales.
¿Cómo hago un color transparente en CSS?
Agrega un canal alfa: rgb(0 0 0 / 50%), hsl(221 83% 53% / 0.5) o un hex de 8 dígitos como #2563eb80. A diferencia de opacity, esto desvanece solo ese color, no todo el elemento.
¿Qué es HSL en CSS?
Tono, saturación y luminosidad (hue, saturation, lightness). El tono es un ángulo en la rueda de color (0 rojo, 120 verde, 240 azul), la saturación indica qué tan vivo es y la luminosidad va del 0% negro al 100% blanco. Facilita los tonos más claros y más oscuros: cambias solo el último número.
¿Qué significa currentColor?
Es el valor de la propiedad color del elemento. Usarlo en un borde o en el fill de un SVG hace que sigan automáticamente el color del texto.