font-palette
Baseline 2022
Новое
С ноября 2022 года эта функция работает на последних устройствах и версиях браузеров. Возможно, эта функция не будет работать на старых устройствах или браузерах.
Свойство font-palette CSS позволяет указать одну из множества палитр, содержащихся в цветном шрифте, которую может использовать пользовательский агент для шрифта. Пользователи также могут переопределить значения в палитре или создать новую палитру, используя атрибут @font-palette-values.
Примечание: Палитра font-palette имеет приоритет при окрашивании шрифта. Свойство color не переопределит палитру шрифта, даже если указано с !important.
Синтаксис
/* Using a font-defined palette */ font-palette: normal; /* Using a user-defined palette */ font-palette: --one; /* Creating a new palette by blending two others */ font-palette: palette-mix(in lch, --blue, --yellow);
Значения
normal-
Указывает стандартную палитру цветов или стандартное цветовое оформление глифов (установленное создателем шрифта) для использования в шрифте. С этим параметром рендерится палитра в шрифте с индексом 0.
light-
Указывает первую палитру в шрифте, соответствующую 'light', для использования в шрифте. Некоторые шрифты содержат метаданные, которые идентифицируют палитру как применимую для светлого (близкого к белому) фона. Если в шрифте таких метаданных нет, значение
lightведет себя какnormal. dark-
Указывает первую палитру в шрифте, соответствующую 'dark', для использования в шрифте. Некоторые шрифты содержат метаданные, которые идентифицируют палитру как применимую для тёмного (близкого к чёрному) фона. Если в шрифте таких метаданных нет, значение ведет себя как
normal. <palette-identifier>-
Позволяет указать собственные значения для палитры шрифта с помощью атрибута @font-palette-values. Это значение задаётся в формате <dashed-ident>.
palette-mix()-
Создаёт новое
font-paletteзначение, смешивая дваfont-paletteзначения с указанными процентами и методами интерполяции цветов.
Формальное определение
| Начальное значение | normal |
|---|---|
| Применяется к | всем элементам и тексту. Также применяется к ::first-letter и ::first-line. |
| Наследуется | да |
| Вычисленное значение | как указано |
| Тип анимации | по типу вычисленного значения |
Формальный синтаксис
font-palette =
normal |
light |
dark |
<palette-identifier> |
<palette-mix()>
<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>? ]
<rectangular-color-space> =
srgb |
srgb-linear |
display-p3 |
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
Примеры
Указание тёмной палитры
Этот пример позволяет использовать первую палитру, помеченную как тёмная (лучше всего работает на тёмном фоне), создателем шрифта.
@media (prefers-color-scheme: dark) {
.banner {
font-palette: dark;
}
}
Анимация между двумя палитрами
Этот пример демонстрирует, как анимировать изменения значения font-palette для создания плавной анимации шрифта.
HTML
HTML содержит единственный абзац текста для анимации:
<p>color-palette<br />animation</p>
CSS
В CSS мы импортируем цветной шрифт под названием Nabla из Google Fonts, и определяем два пользовательских font-palette значения с помощью атрибута @font-palette-values. Затем мы создаём @keyframes, которые анимируют переход между этими двумя палитрами, и применяем эту анимацию к нашему абзацу.
@import url("https://fonts.googleapis.com/css2?family=Nabla&display=swap");
@font-palette-values --blueNabla {
font-family: Nabla;
base-palette: 2; /* this is Nabla's blue palette */
}
@font-palette-values --greyNabla {
font-family: Nabla;
base-palette: 3; /* this is Nabla's grey palette */
}
@keyframes animate-palette {
from {
font-palette: --greyNabla;
}
to {
font-palette: --blueNabla;
}
}
p {
font-family: "Nabla";
font-size: 5rem;
margin: 0;
text-align: center;
animation: animate-palette 4s infinite alternate linear;
}
Результат
Вывод выглядит так:
Примечание: Браузеры, которые ещё не реализовали discrete font-palette анимацию, будут переключаться между двумя палитрами, а не выполнять плавную анимацию.
Спецификации
| Спецификация |
|---|
| CSS Fonts Module Level 4 # font-palette-prop |
Совместимость с браузерами
| Десктоп | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
font-palette |
101 | 101 | 107 | 87 | 15.4 | 101 | 107 | 70 | 15.4 | 19.0 | 101 |
animation_computed |
121 | 121 | Нет | 107 | Нет | 121 | Нет | 81 | Нет | 25.0 | 121 |
dark |
101 | 101 | 107 | 87 | 15.4 | 101 | 107 | 70 | 15.4 | 19.0 | 101 |
light |
101 | 101 | 107 | 87 | 15.4 | 101 | 107 | 70 | 15.4 | 19.0 | 101 |
normal |
101 | 101 | 107 | 87 | 15.4 | 101 | 107 | 70 | 15.4 | 19.0 | 101 |
palette-mix_function |
121 | 121 | Нет | 107 | Нет | 121 | Нет | 81 | Нет | 25.0 | 121 |
См. также
palette-mix()@font-palette-values-
base-paletteописатель -
font-familyописатель -
override-colorsописатель
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/font-palette