Создание цветовых палитр при помощи CSS-функции color-mix()
Мишель Баркер очень подробно объясняет, как работает функция
Когда вы пишете
Для записи
А вот с
Я бы эту функцию пока использовал только для смешивания с чёрным и белым. Смешивать цвета в sRGB всё ещё сложно с точки зрения предсказуемости — правила интерполяции там не очень. А вот когда
https://developer.mozilla.org/en-US/blog/color-palettes-css-color-mix/
Мишель Баркер очень подробно объясняет, как работает функция
color-mix()
. По сути при помощи неё можно смешивать цвета, только важно разобраться, как работает это смешивание.Когда вы пишете
color-mix(in srgb, blue, red)
, то по сути вы смешиваете синий и красный в соотношении 1:1. При этом смешивание — это интерполяция. Очень грубо говоря, для sRGB браузер возьмёт отрезок на градиентной цветовой плоскости между двумя точками, выберет середину, выдаст результат. Для пространств вроде oklch
всё сложнее, но суть та же — у браузера есть правила интерполяции.Для записи
color-mix(in srgb, blue, red 10%)
синего будет 90%. В сумме браузер попытается сделать 100%.А вот с
color-mix(in srgb, blue 10%, red 20%)
случай интересный. Здесь суммарный цвет получится в соотношении 1:2, но непрозрачность цвета будет 0.3, потому что оставшееся до 100% заполняется прозрачным цветом.Я бы эту функцию пока использовал только для смешивания с чёрным и белым. Смешивать цвета в sRGB всё ещё сложно с точки зрения предсказуемости — правила интерполяции там не очень. А вот когда
oklch
можно будет втаскивать в проекты, тогда уже можно начать играться с математикой цвета в более подходящем для этого пространстве. С CSS-переменными функция работает замечательно, так что можно на основе нескольких базовых цветов математически описать полную палитру для всех состояний.https://developer.mozilla.org/en-US/blog/color-palettes-css-color-mix/