Конвертер RGBA в HSLA
Преобразуйте rgba(r, g, b, a) значения в hsla(h, s, l, a) без необходимости делать расчеты самостоятельно. Этот инструмент полезен, когда ваши цвета представлены в RGBA в коде, но вы предпочитаете HSLA для токенов, тем или документации по дизайну.
Введите цвет в формате RGBA, и вы сразу увидите соответствующее представление HSLA. Затем вы можете скопировать вызов hsla() в свои стили, дизайн-систему или внутренние цветовые утилиты.
На этой странице вы также найдете краткое объяснение RGBA и HSLA, четкую формулу преобразования, пошаговый пример, справочную таблицу и ответы на часто задаваемые вопросы о комбинировании этих форматов.
Что такое RGBA
RGBA расширяет модель RGB с помощью альфа-канала. Он записывается как rgba(r, g, b, a), где r, g и b — целые числа в диапазоне 0 до 255, а a — число от 0 до 1.
Значение альфа управляет прозрачностью: 0 — полностью прозрачно, 1 — полностью непрозрачно, а значения между ними создают частичную прозрачность. Это делает RGBA хорошим выбором для наложений, теней и мягких переходов.
Поскольку RGBA использует числовые каналы, его легко генерировать или анимировать на JavaScript и использовать в API рендеринга canvas и WebGL.
Что такое HSLA
HSLA — это модель HSL с альфа-каналом. Он записывается как hsla(h, s, l, a), где оттенок выбирает базовый цвет на круге, насыщенность управляет тем, насколько ярким является цвет, светлота управляет тем, насколько темным или ярким он выглядит, а альфа управляет прозрачностью.
Оттенок измеряется в градусах от 0 до 360. Насыщенность и светлота — это проценты от 0% до 100%. Альфа — это число от 0 до 1, как и в RGBA.
HSLA удобно использовать для проектирования палитр и тем, поскольку вы можете независимо настраивать оттенок, насыщенность и светлоту, при этом управляя прозрачностью с помощью четвертого параметра.
Формула преобразования RGBA в HSLA
rgba(r, g, b, a) -> hsla(h, s, l, a)
Given:
r, g, b in [0, 255]
a in [0, 1]
1) Clamp channels:
r_c = clamp(round(r), 0, 255)
g_c = clamp(round(g), 0, 255)
b_c = clamp(round(b), 0, 255)
a_c = clamp(a, 0, 1)
2) Normalize RGB to [0, 1]:
r' = r_c / 255
g' = g_c / 255
b' = b_c / 255
3) Find max and min:
max = max(r', g', b')
min = min(r', g', b')
delta = max - min
4) Lightness:
l = (max + min) / 2
5) Saturation:
if delta == 0 then s' = 0
else s' = delta / (1 - |2 * l - 1|)
6) Hue:
if delta == 0 then h = 0
else if max == r' then h = 60 * (((g' - b') / delta) mod 6)
else if max == g' then h = 60 * (((b' - r') / delta) + 2)
else if max == b' then h = 60 * (((r' - g') / delta) + 4)
7) Scale to final units:
H = h
S = s' * 100
L = l * 100
8) Compose HSLA:
hsla(H, S%, L%, a_c)
Helper:
clamp(x, min, max) = min if x < min, max if x > max, else xКрасные, зеленые и синие значения сначала нормализуются в диапазон от 0 до 1, затем преобразуются в HSL с использованием стандартных формул. Альфа-компонента передается без изменений, поскольку как RGBA, так и HSLA используют один и тот же диапазон от 0 до 1 для непрозрачности.
Пример для rgba(79, 163, 194, 0.8)
1) Ограничение:
r_c = 79, g_c = 163, b_c = 194, a_c = 0.8
2) Нормализация и вычисление H, S и L:
hsl(196, 49%, 54%) (округлено)
3) Итоговый HSLA:
hsla(196, 49%, 54%, 0.8)Как работает преобразование RGBA в HSLA шаг за шагом
На практике преобразование из RGBA в HSLA означает повторное описание того же цвета в другой системе координат, сохраняя то же значение прозрачности.
rgba(26, 43, 60, 0.5)
-> rgb(r, g, b)
-> hsl(h, s, l)
-> hsla(h, s, l, a)Вот более подробный план процесса для rgba(26, 43, 60, 0.5).
- Шаг 1 - Нормализуйте RGB-каналы
Преобразуйте красные, зеленые и синие значения в дроби и найдите максимальное и минимальное среди них. Эти значения являются основой как для светлоты, так и для насыщенности.
r' = 26 / 255 g' = 43 / 255 b' = 60 / 255 - Шаг 2 - Вычислите светлоту и насыщенность
Светлота — это среднее значение самого яркого и самого темного канала. Разница между ними определяет, насколько цвет далек от серого, и используется для вычисления насыщенности.
max = max(r', g', b') min = min(r', g', b') l = (max + min) / 2 if delta == 0 then s = 0 else s = delta / (1 - |2 * l - 1|) - Шаг 3 - Выведите оттенок и сохраните альфу
Оттенок зависит от того, какой канал самый большой и как остальные каналы с ним соотносятся. Альфа-компонента копируется напрямую из оригинального значения RGBA.
hsla(210, 39%, 17%, 0.5)
Как только вы поймете этот шаблон, становится легко рассматривать RGBA как ваш формат выполнения, а HSLA как более описательное представление для документации и проектирования палитры.
Выбор между RGBA и HSLA
RGBA и HSLA оба представляют цвет плюс прозрачность, но акцентируют разные аспекты. RGBA сосредоточен на числовых каналах, в то время как HSLA сосредоточен на оттенке, насыщенности и светлоте.
Когда RGBA подходит лучше всего
- Реализация и рендеринг: Значения RGBA легко интегрировать в API canvas, WebGL и код низкого уровня рендеринга.
- Динамические эффекты: регулировать числовые каналы или альфу в JavaScript просто с RGBA.
- Совместимость с форматами изображений: многие форматы файлов и конвейеры используют данные канала RGBA внутри.
Когда HSLA более практично
- Проектирование палитр и тем: работа с оттенком, насыщенностью и светлотой упрощает понимание тонов, оттенков и акцентных цветов.
- Документация по дизайну: Значения HSLA часто легче читать и сравнивать в спецификациях и руководствах.
- Коммуникация намерений: описание цвета как "синий с низкой насыщенностью и высокой светлотой" напрямую соответствует параметрам HSLA.
Резюме
Используйте RGBA, когда вы близки к рендерингу или нуждаетесь в числовом контроле в коде. Предпочитайте HSLA, когда проектируете цветовые системы, настраиваете палитры или документируете визуальные решения.
Лучшие практики использования RGBA и HSLA вместе
Вам не нужно выбирать только один формат для всего проекта. С несколькими простыми правилами RGBA и HSLA могут работать вместе без проблем.
Отделите токены от реализации
- Используйте HSLA для токенов и документации: храните и объясняйте выбор палитры с точки зрения оттенка, насыщенности и светлоты.
- Используйте RGBA там, где вы рисуете: при написании стилей или рендеринге на canvas преобразуйте HSLA в RGBA.
Сочетайте с другими цветовыми моделями
- Преобразуйте через RGB: переход между RGBA, HSLA, HEX и HSV обычно использует RGB в качестве моста, который хорошо поддерживается во многих библиотеках.
- Сохраняйте диапазоны действительными: всегда ограничивайте оттенок, насыщенность, светлоту и альфу в их ожидаемых диапазонах при генерации или анимации цветов.
Сохраняйте систему предсказуемой
- Документируйте, где находится каждый формат: например, RGBA в коде рендеринга, HSLA в спецификациях дизайна и HEX для токенов.
- Используйте конвертеры вместо ручных правок: это сохраняет цвета последовательными между форматами и уменьшает количество ошибок.
С четкими обязанностями для RGBA и HSLA ваша цветовая система остается гибкой, при этом оставаясь легкой в обслуживании и расширении.
Таблица преобразования RGBA в HSLA
В таблице ниже перечислены несколько распространенных цветов с прозрачностью, выраженной как в RGBA, так и в HSLA. Значения округлены для удобства чтения, поэтому используйте конвертер в верхней части страницы, когда вам нужны точные числа.
| Описание | RGBA | HSLA |
|---|---|---|
| Белый 50% | rgba(255, 255, 255, 0.5) | hsla(0, 0%, 100%, 0.5) |
| Черный 50% | rgba(0, 0, 0, 0.5) | hsla(0, 0%, 0%, 0.5) |
| Красный 80% | rgba(255, 0, 0, 0.8) | hsla(0, 100%, 50%, 0.8) |
| Зеленый 40% | rgba(0, 255, 0, 0.4) | hsla(120, 100%, 50%, 0.4) |
| Синий 30% | rgba(0, 0, 255, 0.3) | hsla(240, 100%, 50%, 0.3) |
| Желтый 60% | rgba(255, 255, 0, 0.6) | hsla(60, 100%, 50%, 0.6) |
| Циан 70% | rgba(0, 255, 255, 0.7) | hsla(180, 100%, 50%, 0.7) |
| Пурпурный 90% | rgba(255, 0, 255, 0.9) | hsla(300, 100%, 50%, 0.9) |
| Наложение серого | rgba(17, 17, 17, 0.5) | hsla(0, 0%, 7%, 0.5) |
| Мягкий серый | rgba(51, 51, 51, 0.5) | hsla(0, 0%, 20%, 0.5) |
| Граница панели | rgba(85, 85, 85, 0.5) | hsla(0, 0%, 33%, 0.5) |
| Акцентный оранжевый 70% | rgba(255, 165, 0, 0.7) | hsla(39, 100%, 50%, 0.7) |
| Пурпурное наложение | rgba(128, 0, 128, 0.5) | hsla(300, 100%, 25%, 0.5) |
| Наложение бирюзового | rgba(0, 128, 128, 0.5) | hsla(180, 100%, 25%, 0.5) |
Для любого другого сочетания RGBA вы можете использовать конвертер в верхней части страницы, чтобы вычислить точное значение HSLA, используя описанный выше алгоритм.
Часто задаваемые вопросы: RGBA в HSLA
- Почему преобразовывать RGBA в HSLA
RGBA удобен для реализации, но HSLA упрощает описание и настройку цветовых систем. Преобразование позволяет вам сохранять числовой контроль в коде, документируя палитры в более удобном для человека формате.
- Определяют ли RGBA и HSLA разные цвета
Нет. Обе модели охватывают одно и то же цветовое пространство на основе RGB. Корректно преобразованное значение HSLA представляет тот же цвет и непрозрачность, что и оригинальное значение RGBA.
- Меняется ли значение альфа при преобразовании
В большинстве рабочих процессов значение альфа копируется напрямую из RGBA в HSLA. Оба формата используют один и тот же диапазон от 0 до 1 для непрозрачности.
- Могу ли я вернуться из HSLA в RGBA
Да. Вы можете преобразовать HSLA в RGB и повторно использовать значение альфа, что дает вам представление RGBA того же цвета.
- Должен ли я хранить токены как RGBA или HSLA
Это зависит от того, как вы думаете о цвете. HSLA часто более интуитивно понятен для палитр и тем, в то время как RGBA может быть удобен для кода низкого уровня. Многие команды выбирают один формат как токен и преобразуют в другой по мере необходимости.
Связанные конвертеры:
Конвертер HEXA в RGBA
Мгновенный расчет hexa в rgbaКонвертер HEXA в HSLA
Мгновенный расчет hexa в hslaКонвертер HEXA в HSVA
Мгновенный расчет hexa в hsvaКонвертер RGBA в HEXA
Мгновенный расчет rgba в hexaКонвертер RGBA в HSVA
Мгновенный расчет rgba в hsvaКонвертер HSLA в RGBA
Мгновенный расчет hsla в rgba