Сетка контраста палитры
Шесть цветов дают тридцать возможных пар текста и фона, и никто не проверяет тридцать пар вручную. Вставьте свою палитру и получите их все в одной таблице, каждую с коэффициентом и уровнем, плюс короткий список пар, которыми можно пользоваться.
Разделяйте цвета запятой или новой строкой. Принимаются hex вроде #1d3557, rgb(), hsl() и именованные цвета вроде teal.
Расчёты идут в вашем браузере. Ни один цвет нам не отправляется.
Все пары
Строки это цвета текста, столбцы это фоны. Выберите ячейку, чтобы увидеть эту пару.
AAA 7 и больше AA 4.5 и больше Крупный 3 и больше, только для заголовков Не проходит меньше 3
Выбранная пара
Пары, которые можно использовать
Зачем проверять палитру целиком
Фирменные цвета обычно выбирают рядом друг с другом на доске, как образцы. Их редко выбирают парами, когда один написан поверх другого. Это аукается позже, когда разработчику нужен цвет ссылки на светлом фоне, подпись на акцентной панели и надпись на основной кнопке, и он выбирает из палитры на глаз.
Число пар растёт быстро. Для n цветов есть n × (n − 1) способов положить один на другой: это 12 для четырёх цветов, 30 для шести и 132 для двенадцати. Перебирать их по одной так долго, что этого никто не делает. Сетка делает это мгновенно и заодно показывает, как устроена палитра: какие цвета работают как «чернила», какие как «бумага», а какие годятся только для украшения.
Как читать сетку
Каждая строка это цвет текста, каждый столбец это фон. В ячейке показан образец «Aa» в этих двух цветах, коэффициент контраста WCAG, обрезанный до двух знаков после запятой, и одна из четырёх меток:
| Метка | Коэффициент | Для чего |
|---|---|---|
| AAA | 7 и больше | Любой текст, включая длинные статьи |
| AA | от 4,5 до 6,99 | Любой текст |
| Крупный | от 3 до 4,49 | Заголовки от 24 px (18,66 px жирным), иконки, рамки полей и кнопок |
| Не проходит | ниже 3 | Только украшение, без информации |
Коэффициент одинаков, какой бы цвет ни был сверху, поэтому таблица зеркальна относительно диагонали. Мы оставляем обе половины, потому что образцы выглядят по-разному. Тёмное на светлом и светлое на тёмном воспринимаются иначе даже при одинаковом числе. Меню Оставить приглушает все пары ниже выбранного порога. Выберите ячейку, чтобы открыть крупный предпросмотр с заголовком, абзацем, мелким шрифтом и кнопкой. Там же есть ссылка, которая отправляет пару в калькулятор контраста, а он может предложить близкий оттенок, который проходит.
Три списка под сеткой
- Текст обычного размера
- До восьми пар с контрастом 4,5:1 и выше, от самой сильной. Каждая пара показана один раз, с более светлым цветом в качестве фона, потому что так бывает чаще всего.
- Только крупный текст и заголовки
- До шести пар между 3:1 и 4,5:1. Они соблазнительны, потому что в макете при 40 px выглядят нормально. Поставьте их в абзац, и они не проходят.
- Наборы для кнопок
- В кнопке участвуют три цвета и две проверки. Надпись должна достигать 4,5:1 относительно кнопки, а сама кнопка 3:1 относительно страницы, иначе люди вообще не заметят, что это кнопка. Для каждого возможного цвета кнопки список даёт надпись с самым высоким контрастом и самый светлый фон страницы, который удовлетворяет обоим условиям.
Если первый список пуст, в палитре нет пары «чернила и бумага». Добавьте почти чёрный, например #1a1a1a, или почти белый, и сетка заполнится.
Как починить палитру, которой не хватает контраста
Большинство палитр не дотягивают одинаково: в них несколько средних тонов похожей светлоты. Бирюзовый, коралловый, горчичный и фиолетовый совсем не похожи друг на друга, и всё же ни один из них не может нести текст на любом другом. Три добавления исправляют почти любой случай:
- Тёмный нейтральный для основного текста. Глубокий вариант главного фирменного оттенка справляется не хуже чёрного и при этом выглядит фирменно.
- Светлый нейтральный для фона страниц и карточек, например почти белый с оттенком фирменного цвета.
- Более тёмная ступень акцентного цвета для ссылок и кнопок. Снижайте светлоту, пока белый текст на нём не достигнет 4,5:1, а исходный акцент оставьте для крупных форм и иллюстраций.
Затем запишите результат в руководство по стилю как правила о парах, например «акцент только на белом, никогда под основным текстом». Со списком разрешённых пар люди ошибаются реже, чем со списком цветов.
Ввод, ссылки и ограничения
Разделяйте цвета запятыми или переносами строк. Подходят hex с # или без, rgb(), hsl() и названия цветов CSS. Дубли объединяются, а всё после двенадцатого цвета игнорируется. В адресной строке всегда хранится текущая палитра в виде ?c=1d3557,f1faee,…, поэтому скопированная ссылка снова открывает ту же сетку. Всё вычисляется в вашем браузере.
Проходящий коэффициент гарантирует разницу в светлоте. Он не гарантирует, что человек с нарушением цветового зрения различит два цвета, когда они служат кодом, например красный для ошибок и зелёный для успеха. Проверьте такие случаи в симуляторе зрения.
Частые вопросы
Сколько цветов можно проверить за раз?
От 2 до 12. Двенадцать цветов дают 132 ячейки, и это примерно столько, сколько экран может показать в таблице, которую ещё можно прочитать. Для большой дизайн-системы проверяйте цвета текста относительно цветов фона отдельными партиями.
Почему две ячейки с одинаковым коэффициентом показаны дважды?
Контраст работает в обе стороны, поэтому цвет A на B и B на A имеют одинаковый коэффициент. Сетка показывает оба, потому что образец выглядит по-разному и потому что пару обычно ищут, начиная с уже имеющегося фона.
Ни один из моих фирменных цветов не проходит на белом. Что делать?
Оставьте фирменные цвета для крупных поверхностей, иллюстраций и заголовков, где достаточно 3:1, и добавьте более тёмную ступень основного цвета для текста и кнопок. Откройте непроходящую пару в калькуляторе контраста, чтобы получить ближайший оттенок того же тона, который достигает 4,5:1.
Кнопка должна контрастировать со страницей или только её надпись?
И то и другое. Надпись подчиняется правилу для текста (4,5:1 относительно цвета кнопки). Видимая граница кнопки подчиняется WCAG 1.4.11, который требует 3:1 относительно соседних цветов, если только кнопку не выделяет рамка или другой признак.
Можно ли вставить цвета прямо из Figma или CSS-файла?
Да, вставьте блок как есть. Инструмент вытаскивает hex-коды, значения rgb() и hsl() и названия цветов, а всё, что не смог прочитать, перечисляет. Имена переменных и свойств, состоящие только из букв, могут оказаться в списке нераспознанного, и это не страшно.