Цвет не должен служить основным источником информации для пользователей. Например, для пользователей с дальтонизмом или слабовидящих красный цвет состояния ошибки может ничем не отличаться от обычного состояния контрола. Дополняйте обратную связь контрола иконками и текстом.
Что добавлять к цвету- Иконка + текстовая подпись: не просто красный фон, а восклицательный знак и слово «Ошибка»
- В графиках и таблицах — текстуры, паттерны или прямые подписи к данным, не только цветовые легенды
- В формах — не только красная рамка у поля с ошибкой, но и текст под полем с объяснением
Почему это критично за пределами экранаМедицинские дашборды, авиационные интерфейсы, промышленные панели — там цвет как единственный сигнал может стоить жизни.
Практическое правилоУберите цвет совсем — интерфейс должен остаться понятным. Если без цвета непонятно, что происходит — дизайн нужно доработать.
Не используйте чистый черный на чистом беломЧерный текст на белом фоне может рябить: человеку будет сложно сфокусироваться, а его глаза быстро устанут. У пользователей с дислексией текст может расплываться из-за бликов. Поэтому вместо чистого черного используйте его оттенки.
APCA (Advanced Perceptual Contrast Algorithm) — это новый способ считать контраст, который придёт на смену формуле WCAG 2.x в WCAG 3.0.
Старая формула считает контраст одинаково для любого текста — 4.5:1 и всё. Но человеческое зрение так не работает. Мелкий светло-серый текст на белом фоне может формально пройти проверку, но на практике читаться плохо. И наоборот — жёлтый на белом не проходит, хотя крупный жирный жёлтый читается нормально.
Цветовые пространства и доступностьHEX и RGB — одно и то же, разный синтаксис#FF5733 и rgb(255, 87, 51) — это одинаковый цвет, просто записанный по-разному. Оба описывают цвет через три канала: красный, зелёный, синий.
Охватывает примерно 35% всех цветов, видимых человеческому глазу. Современные экраны — iPhone, MacBook, OLED-дисплеи — поддерживают Display P3, который примерно на 25–30% шире sRGB. HEX, RGB и HSL работают только в пространстве sRGB — они физически не могут описать цвета за его пределами. OKLCH может описать любой цвет — и sRGB, и даже за его пределами. Это означает, что дизайнер впервые получает доступ ко всей палитре современного экрана.
HSL — чуть лучше, но всё ещё неточныйhsl(12, 100%, 60%) — добавляет человекопонятные параметры: оттенок, насыщенность, светлота. Кажется, что светлота 50% у любого цвета будет одинаковой яркости. Но это иллюзия — жёлтый при 50% воспринимается намного ярче синего при тех же 50%. HSL не учитывает человеческое восприятие.
LCH — первый по-настоящему перцептивный форматlch(55% 80 30) — три параметра: яркость (Lightness), насыщенность (Chroma), оттенок (Hue). Главное свойство: одинаковое значение яркости = одинаково воспринимаемая яркость. Жёлтый и синий с L=55 будут выглядеть одинаково светлыми для глаза.
OKLCH — улучшенный LCH, сейчас лучший выборoklch(0.65 0.18 30) — та же идея, но с исправленными математическими проблемами LCH. В LCH синие и фиолетовые оттенки вели себя непредсказуемо при изменении насыщенности. OKLCH это исправляет.
Что это даёт для доступности:
- Меняешь только яркость — оттенок не уплывает
- Можно создавать целые палитры с гарантированно предсказуемым контрастом
- Тёмный режим делается проще: берёшь тот же оттенок, меняешь L — и контраст предсказуем
- Дает +30% больше цвета, который может восприниматься человеческим глазом.
Как работает APCA APCA учитывает три фактора одновременно:
Размер шрифта — чем крупнее, тем меньше нужен контраст. Но не два порога как в WCAG (обычный / крупный), а плавная шкала.
Насыщенность шрифта — жирный текст читается лучше тонкого при том же контрасте. APCA это учитывает отдельно.
Направление контраста — тёмный текст на светлом фоне и светлый на тёмном считаются по-разному, потому что глаз воспринимает их неодинаково.