Функция CSS `palette-mix()`
Базовая поддержка Ограниченная доступность
Эта функция не входит в Baseline, поскольку она не работает в некоторых из наиболее широко используемых браузеров.
Экспериментальная: Это экспериментальная технология
Перед использованием в production внимательно ознакомьтесь с таблицей совместимости браузеров.
Экспериментальная: Это экспериментальная технология
Перед использованием в production внимательно ознакомьтесь с таблицей совместимости браузеров.
palette-mix() — это CSS-функция, которую можно использовать для создания нового значения font-palette, смешивая два значения font-palette в заданных пропорциях и с использованием указанных методов интерполяции цветов.
Синтаксис
/* Blending font-defined palettes */ font-palette: palette-mix(in lch, normal, dark) /* Blending author-defined palettes */ font-palette: palette-mix(in lch, --blues, --yellows) /* Varying percentage of each palette mixed */ font-palette: palette-mix(in lch, --blues 50%, --yellows 50%) font-palette: palette-mix(in lch, --blues 70%, --yellows 30%) /* Varying color interpolation method */ font-palette: palette-mix(in srgb, --blues, --yellows) font-palette: palette-mix(in hsl, --blues, --yellows) font-palette: palette-mix(in hsl shorter hue, --blues, --yellows)
Значения
Функциональная запись:
palette-mix(method, palette1 [p1], palette2 [p2])
-
method <color-interpolation-method>, задающий цветовое пространство для интерполяции.-
palette1,palette2 - Значения
font-palette, которые нужно смешать. Это могут быть любые значенияfont-palette, в том числе функцииpalette-mix(),normal,darkиlight. -
p1,p2Необязательно - Значения
<percentage>от0%до100%, задающие долю каждой палитры в смешении. Они нормализуются следующим образом:- Если
p1иp2не указаны, тоp1 = p2 = 50%. - Если
p1не указано, тоp1 = 100% - p2. - Если
p2не указано, тоp2 = 100% - p1. - Если
p1 = p2 = 0%, функция недопустима. - Если
p1 + p2 ≠ 100%, тоp1' = p1 / (p1 + p2)иp2' = p2 / (p1 + p2), гдеp1'иp2'— результаты нормализации.
- Если
Формальный синтаксис
<palette-mix()> = palette-mix(<color-interpolation-method> , [ [normal | light | dark | <palette-identifier> | <palette-mix()> ] && <percentage [0,100]>? ]#{2}) <color-interpolation-method> = in [ <rectangular-color-space> | <polar-color-space> <hue-interpolation-method>? | <custom-color-space> ] <palette-identifier> = <dashed-ident> <palette-mix()> = palette-mix(<color-interpolation-method> , [ [normal | light | dark | <palette-identifier> | <palette-mix()> ] && <percentage [0,100]>? ]#{2}) <rectangular-color-space> = srgb | srgb-linear | display-p3 | display-p3-linear | a98-rgb | prophoto-rgb | rec2020 | lab | oklab | xyz | xyz-d50 | xyz-d65 <polar-color-space> = hsl | hwb | lch | oklch <hue-interpolation-method> = [ shorter | longer | increasing | decreasing ] hue <custom-color-space> = <dashed-ident>
Примеры
Использование palette-mix() для смешивания двух палитр
В этом примере показано, как использовать функцию palette-mix() для создания новой палитры путем смешивания двух других.
HTML
HTML содержит три абзаца, к которым мы применим сведения о шрифтах:
<p class="yellowPalette">Yellow palette</p> <p class="bluePalette">Blue palette</p> <p class="mixedPalette">Mixed palette</p>
CSS
В CSS мы импортируем цветной шрифт из Google Fonts и определяем два пользовательских значения font-palette с помощью at-правила @font-palette-values. Затем мы применяем к абзацам три разных значения font-palette — --yellow, --blue и новую зеленую палитру, созданную с помощью palette-mix() путем смешивания синей и желтой палитр.
@import "https://fonts.googleapis.com/css2?family=Nabla&display=swap";
@font-palette-values --blue-nabla {
font-family: "Nabla";
base-palette: 2; /* this is Nabla's blue palette */
}
@font-palette-values --yellow-nabla {
font-family: "Nabla";
base-palette: 7; /* this is Nabla's yellow palette */
}
p {
font-family: "Nabla", fantasy;
font-size: 4rem;
text-align: center;
margin: 0;
}
.yellowPalette {
font-palette: --yellow-nabla;
}
.bluePalette {
font-palette: --blue-nabla;
}
.mixedPalette {
font-palette: palette-mix(in lch, --blue-nabla 55%, --yellow-nabla 45%);
}
Результат
Результат выглядит так:
Спецификации
Совместимость с браузерами
| Настольные устройства | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | |
palette-mix_function |
121 |
121 |
Нет |
107 |
Нет |
121 |
Нет |
81 |
Нет |
25.0 |
121 |
Нет |
См. также
font-palette@font-palette-valuescolor-mix()- Руководство по значениям цветов CSS
- Цветовое пространство
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/font-palette/palette-mix