RGB каже екрану, скільки світла випромінювати; HSL каже, як колір справді виглядає. Перетворення трьох каналів у відтінок, насиченість і світлість робить колір легким для ручних правок.
Як працює конвертація RGB у HSL
- Поділи R, G і B на 255, щоб кожне значення було між 0 та 1.
- Візьми максимум і мінімум із трьох — їхнє середнє — це світлість L.
- Якщо максимум і мінімум рівні, колір — сірий: відтінок і насиченість обидва 0.
- Інакше виведи S із розкиду між максимумом і мінімумом, а H визначай за тим каналом, що має максимум.
Приклад роботи
В принципі точно. Оскільки H, S і L зазвичай показують округленими цілими числами, зворотне перетворення може змістити канал на один-два кроки.
RGB і HSL пояснено
Що таке RGB?
RGB описує колір трьома каналами світла — червоний, зелений і синій — кожен від 0 до 255. Це відображає, як працюють екрани: усі три на 255 дають білий, всі на 0 — чорний. RGB підходить, коли треба рахувати з кольором (анімація одного каналу, змішування в коді), а rgba() додає прозорість.
- Синтаксис:
- rgb(R, G, B)
- Діапазон:
- 0–255 для кожного каналу
- Краще підходить для:
- код, canvas, прозорість з rgba()
Що таке HSL?
HSL розбиває колір на відтінок (0–360° на колі), насиченість (наскільки яскравий/кольоровий, 0–100%) і світлість (наскільки світлий, 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%) |