Цветовые пространства OKLCH и OKLAB в CSS: почему HEX больше не нужен

Цветовые пространства OKLCH и OKLAB в CSS: почему HEX больше не нужен

На протяжении десятилетий веб-разработчики полагались на HEX-коды и формат RGB для определения цветов. Позже появился HSL, который сделал работу с цветом чуть более человекопонятной. Однако современные требования к дизайну, появление экранов с расширенным цветовым охватом (P3) и необходимость создания доступных интерфейсов вывели на сцену новых игроков: OKLAB и OKLCH. В этой статье мы разберем, почему эти форматы совершают революцию в CSS и почему вам стоит забыть про HEX.

Проблема традиционных цветовых моделей

Главная проблема HEX, RGB и даже HSL заключается в том, что они являются математическими моделями, а не перцептивными. Это означает, что они не учитывают то, как человеческий глаз воспринимает яркость разных цветов.

  • Обманчивая яркость: В модели HSL желтый цвет с яркостью 50% кажется нам гораздо светлее, чем синий с той же яркостью 50%. Это создает огромные сложности при программном создании цветовых схем или расчете контрастности.
  • Ограниченность гаммы: HEX и RGB ограничены пространством sRGB. Современные мониторы (например, в MacBook или флагманских смартфонах) поддерживают пространство Display P3, которое отображает на 25% больше цветов. Старые форматы просто не способны дотянуться до этих ярких и насыщенных оттенков.

Что такое OKLAB и OKLCH?

OKLAB — это цветовое пространство, разработанное инженером Бьёрном Оттоссоном в 2020 году. Оно спроектировано так, чтобы быть математически простым, но при этом перцептивно точным. OKLCH — это та же модель, но представленная в полярных координатах, что делает ее максимально удобной для написания CSS-кода вручную.

Синтаксис oklch(L C H) расшифровывается следующим образом:

  • L (Lightness): Воспринимаемая яркость. Измеряется в процентах (0% — черный, 100% — белый). В отличие от HSL, 50% яркости в OKLCH всегда будет выглядеть одинаково для любого оттенка.
  • C (Chroma): Насыщенность или интенсивность цвета. Значение 0 соответствует серому цвету, а теоретического верхнего предела нет (хотя на практике он ограничен возможностями монитора, обычно до 0.4 или 0.5).
  • H (Hue): Оттенок. Число от 0 до 360, где 0 — розовый/красный, 120 — зеленый, 240 — синий.

Почему OKLCH — это будущее CSS

1. Предсказуемость и доступность. Поскольку яркость (L) в OKLCH соответствует реальному человеческому восприятию, вы можете изменять оттенок (H), сохраняя при этом тот же уровень контрастности. Это делает создание темных и светлых тем, а также проверку доступности текста (WCAG) невероятно простым процессом.

2. Доступ к цветам P3. С помощью OKLCH вы можете использовать сверхнасыщенные цвета, которые раньше были недоступны в вебе. Если монитор пользователя поддерживает широкий цветовой охват, он увидит более сочные оттенки; если нет — браузер автоматически подберет ближайший подходящий аналог в sRGB.

3. Идеальные градиенты. Традиционные градиенты в RGB часто проходят через так называемую серую зону — грязные, ненасыщенные промежуточные оттенки. Градиенты в пространстве OKLCH выглядят чистыми и естественными, так как переход происходит по правилам восприятия цвета глазом.

Практическое применение

Использование OKLCH в CSS уже поддерживается всеми современными браузерами (Chrome 111+, Firefox 113+, Safari 15.4+). Вместо того чтобы гадать с HEX-кодами, вы можете объявлять переменные для дизайн-системы более логично.

Например, создание активного состояния кнопки становится тривиальным: вам не нужно подбирать новый HEX-код, достаточно взять базовый цвет и немного увеличить или уменьшить параметр L (яркость). Это позволяет строить целые цветовые палитры на основе одного базового оттенка, просто меняя значения насыщенности и яркости в CSS-переменных.

Заключение

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

Больше фишек, готовых сниппетов и передовых подходов к CSS мы публикуем в нашем Telegram-канале. Подписывайтесь!

🚀 Прокачай свой код

Готовые CSS-сниппеты, разбор продвинутых фишек и эксклюзивные материалы — в нашем Telegram-канале.

Подписаться
error: Content is protected !!
Прокрутить вверх