Color HSL
Concepto de Color y diseño en Utilidades, conectado con sus herramientas y conceptos vecinos.
HSL (Hue, Saturation, Lightness) es un modelo de color que describe los colores de la misma manera en que los percibe el ojo humano: por su matiz (qué color es), su saturación (qué tan vivo) y su luminosidad (qué tan claro u oscuro). Es más intuitivo que RGB para crear y ajustar colores, y cada vez más utilizado en sistemas de diseño modernos.
Los tres parámetros de HSL
Matiz (Hue) — 0 a 360°
El matiz es la posición en la rueda de color. Funciona como un ángulo:
| Ángulo | Color |
|---|---|
| 0° / 360° | Rojo |
| 30° | Naranja |
| 60° | Amarillo |
| 120° | Verde |
| 180° | Cian |
| 240° | Azul |
| 270° | Violeta |
| 300° | Magenta |
Saturación — 0 % a 100 %
Controla la viveza del color. Al 0 % todos los matices se convierten en gris. Al 100 % el color es puro.
hsl(0, 0%, 50%)→ gris medio (independientemente del matiz)hsl(0, 50%, 50%)→ rojo apagadohsl(0, 100%, 50%)→ rojo vibrante
Luminosidad — 0 % a 100 %
Controla el brillo. El 50 % es el color base; valores menores lo oscurecen y mayores lo aclaran:
hsl(240, 100%, 0%)→ negro (cualquier matiz)hsl(240, 100%, 50%)→ azul purohsl(240, 100%, 100%)→ blanco (cualquier matiz)
Sintaxis en CSS
color: hsl(210, 80%, 50%); /* azul medio */
color: hsl(30, 100%, 50%); /* naranja puro */
color: hsl(120, 60%, 35%); /* verde oscuro */
color: hsla(210, 80%, 50%, 0.5); /* azul al 50 % de opacidad */
Desde CSS Color Level 4, hsl() también acepta una barra para el alfa, igual que rgb():
color: hsl(210 80% 50% / 0.5); /* nueva sintaxis, sin comas */
Por qué HSL es más práctico que RGB para ajustar colores
Con RGB, si quieres aclarar un color tienes que modificar los tres canales a la vez. Con HSL, basta con subir la luminosidad:
/* Color base */
--brand-500: hsl(220, 90%, 56%);
/* Variantes generadas solo tocando L */
--brand-300: hsl(220, 90%, 72%);
--brand-700: hsl(220, 90%, 36%);
--brand-900: hsl(220, 90%, 20%);
Este patrón es la base de los sistemas de tokens de color de bibliotecas como Tailwind CSS (que internamente calcula sus variantes de color en HSL) o Material Design.
Equivalencias con HEX y RGB
| hsl() | rgb() equivalente | HEX |
|---|---|---|
| hsl(0, 100%, 50%) | rgb(255, 0, 0) | #FF0000 |
| hsl(120, 100%, 50%) | rgb(0, 255, 0) | #00FF00 |
| hsl(240, 100%, 50%) | rgb(0, 0, 255) | #0000FF |
| hsl(0, 0%, 0%) | rgb(0, 0, 0) | #000000 |
| hsl(0, 0%, 100%) | rgb(255, 255, 255) | #FFFFFF |
| hsl(0, 0%, 50%) | rgb(128, 128, 128) | #808080 |
Limitaciones de HSL
- HSL no es perceptualmente uniforme: dos colores con la misma luminosidad HSL pueden parecer muy distintos de brillo para el ojo humano. Por ejemplo, un amarillo al 50 % de luminosidad parece mucho más brillante que un azul al 50 %. Para diseño de alta precisión existen otros modelos como LCH u OKLAB (disponibles en CSS con
lch()yoklab()). - No es lo mismo que HSB/HSV: el modelo HSB (Hue, Saturation, Brightness), usado por Photoshop y otras herramientas de diseño, es diferente al HSL de CSS. Un mismo color puede tener valores distintos en cada modelo, así que presta atención a qué modelo usa la herramienta que estás consultando.
Conceptos relacionados
También en Color y diseño
Preguntas frecuentes
¿Qué representan los tres valores de hsl()?
¿Para qué sirve cambiar solo la luminosidad en HSL?
¿Cuál es la diferencia entre HSL y HWB?
Ver todas las herramientas de Utilidades.