Menu

Colores en CSS: nombres, hex, RGB, RGBA, HSL y transparencia

Todas las formas de escribir un color en CSS: colores con nombre, códigos hex, rgb() y rgba(), hsl(), transparencia con un canal alfa, currentColor y los más nuevos oklch() y color-mix(). Cada uno con un ejemplo en vivo y un conversor.

Esta página incluye editores ejecutables: edita, ejecuta y ve el resultado al instante.

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:

FormatoEjemploIdeal para
Nombretomato, rebeccapurplePruebas rápidas y prototipos
Hex#2563eb, #25eCopiar 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 clavetransparent, currentColorMira 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 #25e es #2255ee.
  • #rrggbbaa: el último par es el alfa, así que #2563eb80 es 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. Con white o black crea 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: 2563eb es inválido y se ignora.
  • Usar opacity para 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. royalblue no 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.

Coddy programming languages illustration

Aprende a programar con Coddy

COMENZAR