Теория цвета
и практики гибкого кода
«Вместе с цветом в нашу жизнь приходят эмоции»
Анна Ширяева
«Вместе с цветом в нашу жизнь приходят эмоции»
Он позволял выбирать любые цвета!
Когда заказчики с ним играли, почему-то
получалось не очень...
Потому что редактор позволял выбирать любые цвета!
И чувствительность к отдельным оттенкам.
~ 1 из 12 мужчин (8%)
~ 1 из 200 женщин (0.5%)
h · оттенок
320
c · насыщенность
0.20
l · светлота
65%





Бонусом нужен еще тонкий текст
Бонусом нужен еще тонкий текст
Разница по L 45% и выше ~ попадание в АА
Задаёт значение в диапазоне между min и max.
Вычисляется как: max(MIN, min(VAL, MAX)).
:root {
--theme-l: 0.65;
--theme-c: 0.25;
--theme-h: 305;
--theme-angle: 45; // угол цветовой гармонии
}
:root {
--hue1: var(--theme-h);
--hue2: calc(var(--theme-h) + var(--theme-angle));
--hue3: calc(var(--theme-h) - var(--theme-angle));
}
:root {
--theme-accent: oklch(var(--theme-l) var(--theme-c) var(--theme-hue1));
--theme-accent-2: oklch(var(--theme-l) var(--theme-c) var(--theme-hue2));
--theme-accent-3: oklch(var(--theme-l) var(--theme-c) var(--theme-hue3));
}
:root {
--base: #F637C6;
--accent-soft: oklch(from var(--base) calc(l + 15%) calc(c * 0.6) h);
--accent-deep: oklch(from var(--base) calc(l - 15%) c h);
}
--base — палитра пересчитывается через oklch(from ...).
:root {
--bg: #0E1016;
--accent: #C08BFF;
--bg-60: color-mix(in oklab, var(--accent) 60%, var(--bg));
--bg-30: color-mix(in oklab, var(--accent) 30%, var(--bg));
}
<div class="container" data-theme="dark"></div>
.container[data-theme="dark"] {
// тут перенастраиваете токены
}
<input type="radio" name="accent" value="blue" checked="">
<input type="radio" name="accent" value="green" checked="">
.container:has([name="accent"][value="blue"]:checked) { --accent: #4DA6FF; }
.container:has([name="accent"][value="green"]:checked) { --accent: #4DE0A0; }
color-scheme: light dark;
--accent: light-dark(#F637C6, #FF6ED6);
Подстраивается под системные настройки
@media (prefers-color-scheme: dark) {
// набор токенов темной темы
}
Один токен меняет всё: градиент, булеты, подсветки, кнопку и аватар.
l, c, h
Цветовые пространства = математика цвета в коде.
Новые возможности CSS помогают
проще этой математикой пользоваться.
Теорию цвета можно применять не только в CSS, но и в любых других вычислениях.
Используя эти возможности, вы можете создавать
гибкие решения.
- h (по часовой) = холодеют
+ h (против часовой) = теплеют
- h (по часовой) = теплеют
+ h (против часовой) = холодеют