docs.rodeo

MDN Web Docs mirror

font-palette

{{CSSRef}} 

The font-palette CSS property allows specifying one of the many palettes contained in a color font that a user agent may use for the font. Users can also override the values in a palette or create a new palette by using the @font-palette-values at-rule.

[!NOTE] A font-palette palette takes precedence when coloring a font. The {{cssxref("color")}}  property will not override a font palette, even if specified with {{cssxref("important", "!important")}} .

Syntax

/* 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);

Values

Formal definition

{{CSSInfo}} 

Formal syntax

{{CSSSyntax}} 

Examples

Specifying a dark palette

This example allows you to use the first palette marked as dark (works best on a near black background) by the font-maker.

@media (prefers-color-scheme: dark) {
  .banner {
    font-palette: dark;
  }
}

Animating between two palettes

This example illustrates how to animate font-palette value changes to create a smooth font animation.

HTML

The HTML contains a single paragraph of text to animate:

<p>color-palette<br />animation</p>

CSS

In the CSS, we import a color font called Nabla from Google Fonts, and define two custom font-palette values using the {{cssxref("@font-palette-values")}}  at-rule. We then create {{cssxref("@keyframes")}}  that animate between these two palettes, and apply this animation to our paragraph.

@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;
}

Result

The output looks like this:

{{EmbedLiveSample("Animating between two palettes", "100%", 300)}} 

[!NOTE] Browsers that still implement discrete font-palette animation will flip between the two palettes rather than smoothly animating.

Specifications

{{Specifications}} 

Browser compatibility

{{Compat}} 

See also

In this article

View on MDN