ГлавнаяИнструментыПродуктовый дизайнГенератор доступной палитры
Генератор доступной палитры из фирменного цвета
Введите фирменный цвет — и получите шкалу из десяти шагов от 50 до 900, построенную в перцептивном пространстве OKLCH. Для каждого шага виден контраст с белым и чёрным текстом, отдельно перечислены пары шагов, которые проходят WCAG AA, а результат выгружается в CSS-переменные, конфиг Tailwind или дизайн-токены.
—
| Токен | Цвет | OKLCH | Белый текст | Чёрный текст | APCA Lc Б / Ч |
|---|
Пары текста и фона, проходящие AA (4,5:1)
Шаг фона → шаги той же палитры, которые можно ставить на него текстом.
Метод. Шаги равномерно распределены по светлоте OKLCH между фирменным цветом и краями шкалы (L ≈ 97,5 % для 50, ≈ 25 % для 900); оттенок не меняется, хрома убывает к белому, цвета вне охвата sRGB теряют хрому, пока не поместятся. Контраст — коэффициент WCAG 2.2 без округления вверх.
Расчёт идёт в вашем браузере — введённые данные никуда не отправляются.
Как пользоваться
- Введите фирменный цветВставьте HEX из брендбука или выберите цвет в палитре. Генератор найдёт шаг с подходящей светлотой и построит светлые тона выше и тёмные ниже.
- Проверьте таблицу контрастаДля каждого шага показан контраст с белым и с чёрным текстом. «AA» — 4,5:1 для обычного текста, «Крупный» — только 3:1 для крупного текста и элементов интерфейса.
- Подберите пары текста и фонаСписок пар показывает, какие шаги можно использовать текстом на каждом фоне, — например, текст 700 на фоне 50 для информационной плашки.
- Выгрузите результатВыберите CSS-переменные, конфиг Tailwind, JSON или дизайн-токены W3C, задайте название палитры и скопируйте код в проект.
Почему оттенки строят в OKLCH
Проще всего осветлить или затемнить цвет, смешав его с белым или чёрным в sRGB или изменив L в HSL. Оба способа дают неровные шкалы. Светлота HSL не перцептивна: жёлтый с L = 50 % выглядит намного ярче синего с теми же 50 %, и «одинаковый» шаг у разных оттенков даёт совсем разный контраст. Смешивание с белым в sRGB сдвигает оттенок: синий уходит в фиолетовый, красный — в розовый.
OKLCH — цилиндрическая форма пространства OKLab, которое Бьёрн Оттоссон опубликовал в 2020 году; сейчас оно входит в CSS Color Level 4. Пространство разделяет три параметра, важных дизайнеру:
L отражает то, насколько светлым цвет кажется глазу, поэтому равные шаги по L дают шкалы, которые выглядят ровно у любого оттенка, а контраст с белым и чёрным меняется от шага к шагу предсказуемо. По этой причине Tailwind CSS v4 описывает стандартную палитру в OKLCH.
Как генератор строит шкалу
- Фирменный цвет переводится в OKLCH и ставится на шаг с ближайшей опорной светлотой (или на выбранный вами шаг). Его HEX сохраняется точно.
- Светлые шаги равномерно распределяются по L между фирменным цветом и L ≈ 97,5 % (шаг 50), тёмные — между фирменным цветом и L ≈ 25 % (шаг 900).
- Оттенок не меняется. Хрома убывает к светлому краю — очень светлые тона с полной насыщенностью выглядят кислотно — и снижается максимум на треть к тёмному.
- Цвет вне охвата sRGB возвращается в него уменьшением хромы при сохранении L и H, как рекомендует CSS Color 4.
- Каждый HEX округляется до 8 бит на канал, и контраст считается по округлённому значению — тому, что попадёт в код.
Как читать столбцы контраста
Для каждого шага таблица показывает коэффициент контрастности WCAG 2.2 с чисто белым (#fff) и чисто чёрным (#000) текстом:
- AA — не меньше 4,5:1: подходит для основного текста, подписей и ссылок.
- Крупный — от 3:1 до 4,5:1: только для текста от 24 px (18,66 px жирным) и нетекстовых элементов — иконок, рамок, фокусной обводки (WCAG 1.4.11).
- Нет — ниже 3:1: только декоративные элементы, не текст.
Шаги распределены по воспринимаемой светлоте, поэтому у большинства оттенков результат похож: белый текст проходит AA на шагах 600–900, чёрный — на 50–500. С обоими цветами одновременно почти ничего не проходит: 4,5:1 и с белым, и с чёрным возможно только в очень узкой полосе относительной яркости — от 0,175 до 0,183. Поэтому в дизайн-системах основные кнопки с белым текстом делают на 600 или 700, а 400–500 оставляют для заливок, графиков и крупного текста.
Столбец APCA показывает контраст светлоты Lc из черновика WCAG 3 для белого и чёрного текста. Значения выше 75 комфортны для основного текста, выше 60 — для подписей интерфейса, выше 45 — для заголовков. APCA пока не стандарт: используйте его, чтобы выбрать из вариантов, уже прошедших WCAG 2.2.
Пары внутри палитры
В тонированных интерфейсах — информационных плашках, выделенных строках, тегах, подсказках онбординга — тёмный шаг ставят на светлый шаг того же оттенка. Список пар показывает для каждого фона, какие шаги текста дают 4,5:1. Ориентир: шаги, между которыми пять и больше ступеней (50 и 600, 100 и 700), обычно проходят, соседние — никогда.
Как использовать палитру в дизайн-системе
- Называйте по роли, а не по значению. Выгрузите шкалу как
--brand-50 … --brand-900, а поверх назначьте роли:--color-primary: var(--brand-600),--color-primary-text: var(--brand-700),--color-info-bg: var(--brand-50). Если бренд поменяется, правка затронет один список. - Зафиксируйте разрешённые пары. Запишите, какой шаг текста можно ставить на какой фон, чтобы никто в спешке не поставил текст 400 на фон 100.
- Тёмная тема — отдельное сопоставление. Используйте ту же шкалу в обратную сторону — светлые шаги для текста, тёмные для поверхностей — и снова проверьте пары: тёмные сочетания, проходящие WCAG 2, всё равно могут казаться блёклыми, и APCA показывает это лучше.
- Состояниям тоже нужен контраст. Наведение и нажатие обычно сдвигают цвет на шаг темнее; фокусной обводке нужно 3:1 относительно окружающего фона.
- Семантические цвета — успех, предупреждение, ошибка — строятся так же, из одного базового цвета каждый. Жёлтый и салатовый узнаваемы только на светлых шагах, где белый текст не проходит, — ставьте на них тёмный текст.
Чтобы проверить отдельную пару, в том числе цвета вне палитры или полупрозрачные подложки, воспользуйтесь проверкой контраста цветов.
Источники
- Ottosson B. A perceptual color space for image processing, 2020 — пространства OKLab и OKLCH, матрицы преобразования.
- W3C. CSS Color Module Level 4 — запись oklch() и приведение к охвату уменьшением хромы.
- W3C. Web Content Accessibility Guidelines (WCAG) 2.2 — критерии 1.4.3, 1.4.6 и 1.4.11, относительная яркость и коэффициент контрастности.
- Somers A. APCA — Accessible Perceptual Contrast Algorithm, apca-w3 0.0.98G-4g — значения Lc.
- W3C Design Tokens Community Group. Design Tokens Format Module, черновик — структура $type и $value в экспорте токенов.
Частые вопросы
Что означают числа от 50 до 900 в палитре?
Это шаги светлоты одного оттенка, которые популяризировали Material Design и Tailwind CSS: 50 — самый светлый тон, 900 — самый тёмный, а 500 или 600 обычно близки к фирменному цвету. Числа — названия, а не измерения, поэтому любой шаг можно подстроить.
Почему оттенки лучше строить в OKLCH, а не в HSL?
Светлота OKLCH соответствует воспринимаемой яркости, а светлота HSL — нет: жёлтый и синий с одинаковой светлотой HSL выглядят совсем по-разному и дают разный контраст. Равные шаги в OKLCH дают шкалы, ровные для любого оттенка и без сдвига тона при осветлении.
Какой шаг палитры брать для текста на белом?
Первый шаг, у которого в таблице не меньше 4,5:1 с белым. В палитрах этого генератора обычно это 600, потому что шаги следуют воспринимаемой светлоте; в палитрах на основе HSL жёлтому, салатовому и бирюзовому часто нужен 800 и темнее. Для крупного текста и иконок достаточно 3:1, поэтому может подойти шаг светлее.
Почему ни один шаг не проходит и с белым, и с чёрным текстом?
Чтобы получить 4,5:1 одновременно с белым и с чёрным, цвету нужна относительная яркость от 0,175 до 0,183 — полоса настолько узкая, что шаги палитры в неё почти не попадают. Это нормально: на тёмных шагах используйте белый текст, на светлых — тёмный.
Мой фирменный цвет точно будет в палитре?
Да. Фирменный цвет сохраняет точный HEX на шаге, где его светлота подходит лучше всего, или на выбранном вами шаге, а остальные шаги строятся вокруг него.
Как подключить экспорт в Tailwind CSS?
Для Tailwind v3 вставьте экспорт «Конфиг Tailwind» в theme.extend.colors в tailwind.config.js и используйте классы вроде bg-brand-600. Для Tailwind v4 выгрузите CSS-переменные и переименуйте их в --color-brand-600 внутри блока @theme.
Ещё в разделе «Продуктовый дизайн»
- Проверка контраста цветов
Проходит ли пара цветов текста и фона WCAG AA или AAA?
- Палитра интерфейса для сайта
Какие цвета интерфейса вывести из фирменного цвета, чтобы весь текст прошёл контраст?
- Генератор типографической шкалы
Какие размеры шрифта дают стройную адаптивную типографическую шкалу?
- Время чтения подсказок и тура
Успеет ли пользователь прочитать подсказку или шаг тура?
- Проверка текста подсказки
Достаточно ли подсказка короткая, понятная и ведёт ли к действию?
- Калькулятор SUS
Какой балл SUS у интерфейса и хорошее ли у него юзабилити?