Spec-Zone.ru › CSS

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API