RGB говорит экрану, сколько света излучать; HSL описывает, как цвет воспринимается. Преобразование трёх каналов в оттенок, насыщенность и светлоту делает цвет легко настраиваемым вручную.
Как работает конвертация RGB в HSL
- Раздели R, G и B на 255, чтобы каждое значение было между 0 и 1.
- Возьми максимум и минимум из трёх — их среднее это светлота L.
- Если максимум и минимум равны, цвет — серый: оттенок и насыщенность равны 0.
- Иначе выведи S из размаха между максимумом и минимумом, а H считай по тому каналу, который максимален.
Рабочий пример
В принципе точно. Поскольку H, S и L обычно показывают округлёнными целыми числами, обратная конвертация может сдвинуть канал на один–два шага.
RGB и HSL объяснено
Что такое RGB?
RGB описывает цвет как три световых канала — red, green и blue — каждый от 0 до 255. Это отражает работу экранов: все три на 255 дают белый, все на 0 — чёрный. RGB подходит, когда нужно вычислять с цветом, а rgba() добавляет прозрачность.
- Синтаксис:
- rgb(R, G, B)
- Диапазон:
- 0–255 на канал
- Лучше всего для:
- код, canvas, прозрачность через rgba()
Что такое HSL?
HSL разбивает цвет на hue (0–360° на цветовом круге), saturation (насколько цветной, 0–100%) и lightness (яркость, 0–100%). Поскольку каждая часть совпадает с тем, как люди описывают цвет, HSL — самый простой формат для создания оттенков, тональных вариаций и согласованных палитр вручную или в коде.
- Синтаксис:
- hsl(H, S%, L%)
- Диапазон:
- 0–360°, 0–100%, 0–100%
- Лучше всего для:
- палитры, оттенки и тона, темизация
Таблица соответствий RGB → HSL
Наиболее распространённые цвета CSS, сконвертированные из RGB в HSL.
| Цвет | RGB | HSL |
|---|---|---|
| black | rgb(0, 0, 0) | hsl(0, 0%, 0%) |
| white | rgb(255, 255, 255) | hsl(0, 0%, 100%) |
| red | rgb(255, 0, 0) | hsl(0, 100%, 50%) |
| lime | rgb(0, 255, 0) | hsl(120, 100%, 50%) |
| blue | rgb(0, 0, 255) | hsl(240, 100%, 50%) |
| yellow | rgb(255, 255, 0) | hsl(60, 100%, 50%) |
| orange | rgb(255, 165, 0) | hsl(39, 100%, 50%) |
| teal | rgb(0, 128, 128) | hsl(180, 100%, 25%) |
| purple | rgb(128, 0, 128) | hsl(300, 100%, 25%) |
| gray | rgb(128, 128, 128) | hsl(0, 0%, 50%) |