Без загрузки, 100% локально, без аккаунта

Статья

Цветовые инструменты для веба: hex, палитры и доступность

Подбор цветов для сайта кажется простым ровно до встречи с hex-кодами, тройками RGB и углами HSL, которые описывают одно и то же по-разному. В статье разбирается, как эти форматы связаны между собой, как превратить один фирменный цвет в пригодную палитру и как добиться того, чтобы результат оставался читаемым для людей, видящих цвет иначе.

Hex, RGB и HSL описывают один и тот же цвет

Цвет на экране смешивается из красного, зелёного и синего света. Запись hex задаёт эти три канала шестисимвольным кодом, например #2563eb, где каждая пара символов это один канал от 00 до ff. RGB записывает те же три числа в десятичном виде, от 0 до 255, что читается легче, но не добавляет ничего нового. HSL заходит с другой стороны: он описывает цвет через тон (положение на цветовом круге от 0 до 360 градусов), насыщенность (насколько он яркий) и светлоту (насколько близок к белому или чёрному). HSL это формат, к которому тянутся дизайнеры, когда хотят подвинуть цвет, ведь поднять светлоту или сдвинуть тон это одно интуитивное изменение, а не три связанных числа. Конвертер позволяет переходить между всеми тремя, чтобы прочитать значение в одном формате и применить его в другом.

Один и тот же янтарный цвет, записанный тремя способами: hex #E8A33D, rgb(232, 163, 61) и hsl(36, 79%, 57%).

Превращение одного цвета в палитру

Одного фирменного цвета редко хватает. Рабочая палитра обычно требует основной цвет, один или два акцента и набор нейтральных серых для текста и фонов. Связи между цветами следуют простым правилам цветового круга: комплементарные цвета лежат напротив друг друга, аналогичные стоят рядом и дают спокойное ощущение, а триадный набор равномерно распределяет три цвета для контраста без диссонанса. Инструмент цветовых схем применяет эти правила к вашему исходному цвету и выдаёт подходящие hex-коды, так что вычислять углы вручную не нужно. Если у вас уже есть изображение, настроение которого вам нравится, экстрактор палитры считывает из него доминирующие цвета, и это быстрый способ построить сайт на основе фотографии или логотипа.

Контраст и дальтонизм

Палитра, отлично выглядящая на вашем экране, всё равно может подвести читателей. Примерно у одного из двенадцати мужчин и одной из двухсот женщин есть та или иная форма нарушения цветовосприятия, чаще всего трудность с различением красного и зелёного. Если единственный признак ошибки это красный текст на зелёной кнопке, такие читатели его не заметят. Решение не в том, чтобы избегать цвета, а в том, чтобы никогда не полагаться на один лишь цвет: сопровождайте его значком, подписью или формой и сохраняйте достаточный контраст по светлоте между текстом и его фоном. Симулятор дальтонизма показывает, как ваша палитра выглядит при распространённых типах цветовосприятия, и проблему можно поймать до выпуска, а не после жалобы.

Два образца текста на тёмной карточке: текст с низким контрастом, не проходящий WCAG AA при значении ниже 4,5:1, и читаемый текст, проходящий проверку при 4,5:1 и выше.

Делаем всё это в браузере

Ни один из этих шагов не требует сервера. Преобразование hex-кода, генерация схемы, считывание цветов из изображения и моделирование дальтонизма это небольшие вычисления, с которыми браузер справляется мгновенно. Это важно, когда изображение, из которого вы берёте пробу, это невыпущенный дизайн или логотип клиента: с этими инструментами файл остаётся на вашем устройстве и ничего не загружается. Вы получаете тот же результат, что и от онлайн-сервиса, не передавая макет. Конвертер цвета, генератор цветовых схем, экстрактор палитры и симулятор дальтонизма работают локально и так же действуют офлайн после загрузки страницы.

OKLCH и расширенные цветовые пространства

Hex, RGB и HSL описывают цвета в пределах гаммы sRGB, которую экраны используют уже много лет. Новые дисплеи воспроизводят больше, и CSS теперь позволяет обращаться к этому диапазону через функцию color() и цветовое пространство Display P3, которое добавляет насыщенные зелёные и красные тона, недоступные в sRGB. Более существенное изменение связано с OKLCH: это способ записи цвета через светлоту, насыщенность и оттенок, который отражает то, как глаз воспринимает яркость. В HSL жёлтый и синий при одинаковой светлоте 50% выглядят совершенно по-разному: жёлтый кажется ярким, синий кажется тёмным. В OKLCH фиксация светлоты и смена только оттенка сохраняет воспринимаемую яркость постоянной. Это позволяет строить палитры, где каждый оттенок соответствует одному и тому же целевому контрасту с помощью одного числа, без ручной подгонки каждого цвета.

Инструменты из этой статьи

Частые вопросы

В чём разница между hex и RGB?

Это два способа записать один и тот же цвет. Hex упаковывает каналы красного, зелёного и синего в шестисимвольный код по основанию 16, тогда как RGB перечисляет те же три канала десятичными числами от 0 до 255. #ff0000 и rgb(255, 0, 0) это один и тот же красный. Hex компактен и часто встречается в CSS и файлах дизайна, RGB читается с первого взгляда легче, а перевод между ними ничего не меняет в самом цвете.

Как понять, читаемы ли мои цвета для пользователей с дальтонизмом?

Прогоните палитру через симулятор дальтонизма, который перерисовывает ваши цвета так, как их увидел бы человек с каждым распространённым типом цветовосприятия. Следите за парами, которые сливаются в один оттенок, особенно за красными и зелёными. Самая надёжная привычка это никогда не использовать цвет как единственную подсказку: подкрепляйте его текстом, значком или узором и сохраняйте чёткую разницу по светлоте между передним планом и фоном, чтобы смысл уцелел, даже если тон пропал.