tools / color
color/
Конвертация HEX, RGB, HSL и OKLCH, выбор цвета и расчет контраста WCAG относительно черного и белого.
Предпросмотр
Форматы
| HEX | |
|---|---|
| RGB | |
| HSL | |
| OKLCH |
Переменные CSS
Контраст (WCAG 2.x)
| На белом | Aa Пример текста |
|---|---|
| На черном | Aa Пример текста |
Частые вопросы
Какие форматы понимает поле ввода цвета и можно ли писать название цвета, например red
Названия цветов не поддерживаются, появится сообщение «Формат не распознан». Можно вводить HEX (3, 4, 6 или 8 цифр, # можно опустить), rgb() / rgba(), hsl() / hsla() и oklch(); аргументы разделяются запятыми либо пробелами, а непрозрачность пишется после косой черты (например, rgb(255 0 0 / 50%)). Тон (hue) в HSL может иметь единицы deg, rad, grad или turn. На выходе всегда четыре формата: HEX, RGB, HSL и OKLCH, CMYK и HSV нет.
Где в 8-значном HEX находится альфа-канал, в начале или в конце, и почему 80 превращается в 0.502
В последних двух цифрах, запись #RRGGBBAA, как в CSS. В Android часто встречается форма #AARRGGBB, где альфа-канал стоит первым, поэтому перед вставкой перенесите первые две цифры в конец. Две шестнадцатеричные цифры дают только 256 градаций, поэтому 80 (128 в десятичной системе) переводится в 0.502, а не в ровные 0.5; в обратную сторону непрозрачность 0.5 дает в конце HEX значение 80.
Что происходит со значениями вне диапазона и что значит «Вне охвата sRGB» для OKLCH
Если цвет выходит за пределы того, что способен показать sRGB, инструмент по отдельности обрезает красный, зеленый и синий каналы до допустимого диапазона и выводит обрезанный цвет. Значения вроде rgb() выше 255 или насыщенность и светлота HSL выше 100% обрезаются без уведомления; сообщение «Вне охвата sRGB» появляется только для OKLCH, потому что он умеет описывать цвета ярче, чем sRGB. OKLCH в результате пересчитывается из обрезанного цвета, поэтому он отличается от введенного вами. На экране с широким цветовым охватом запись oklch() прямо в CSS может выглядеть ярче, чем предпросмотр здесь.
Как считается контраст и можно ли сравнить два произвольных цвета
Инструмент сравнивает введенный цвет только с чисто белым и чисто черным: он считается цветом текста на белом и на черном фоне, другой фон выбрать нельзя. Расчет по WCAG 2.x: каналы sRGB переводятся в линейные значения, затем взвешиваются с коэффициентами 0.2126, 0.7152 и 0.0722, и получается относительная яркость L; контраст = (L более светлого + 0.05) ÷ (L более темного + 0.05). Для двух любых других цветов посчитайте по той же формуле самостоятельно.
Что означают AA, AAA и «крупный текст»
AA и AAA — два уровня соответствия WCAG по контрасту текста, AAA строже. Для обычного текста AA требует 4.5 : 1, AAA — 7 : 1; для крупного текста AA — 3 : 1, AAA — 4.5 : 1. Инструмент помечает каждый пункт как «пройден» или «не пройден». «Крупным» считается текст от 18pt (около 24px) и полужирный текст от 14pt (около 18.7px). Для сайтов обычно ориентируются на AA.
Как считается контраст для полупрозрачного цвета
Сначала цвет накладывается на фон с учетом непрозрачности, затем считается контраст. Строка «На белом» накладывает его на чисто белый фон, строка «На черном» — на чисто черный, поэтому один и тот же полупрозрачный цвет в этих строках участвует в расчете как два разных цвета. Если реальный фон на вашей странице не чисто белый и не чисто черный, результат будет другим, и его нужно проверить отдельно.
Можно ли выбрать в палитре полупрозрачный цвет
Нет. Палитра — это встроенный элемент браузера, и она позволяет выбирать только непрозрачные цвета в виде 6-значного HEX. После выбора в палитре поле ввода заменяется на #rrggbb, и прежняя непрозрачность теряется; для полупрозрачного цвета введите в поле 8-значный HEX или rgb(255 0 0 / 50%). Если в поле введен полупрозрачный цвет, палитра показывает только его непрозрачную часть.
Как пользоваться строками «Переменные CSS»
Скопируйте их в правило :root, и они готовы к использованию. Четыре строки — это HEX, три числа R G B через пробел, три значения H S L и полный oklch(). --color-rgb и --color-hsl не содержат непрозрачности, поэтому ее можно подстроить на месте, например rgb(var(--color-rgb) / 50%); такая запись с пробелами и косой чертой требует достаточно свежего браузера. Если сам цвет полупрозрачный, непрозрачность есть только в --color и --color-oklch.