paint()

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Die paint() CSS Funktion definiert einen <image> Wert, der mit einem PaintWorklet generiert wird.

Syntax

css
paint(workletName, ...parameters)

wo:

workletName

Der Name des registrierten Worklets.

parameters Optional

Optionale zusätzliche Parameter, die an das paintWorklet übergeben werden

Beispiele

Grundlegende CSS paint() Verwendung

Angenommen, folgendes HTML:

html
<ul>
  <li>item 1</li>
  <li>item 2</li>
  <li>item 3</li>
  <li>item 4</li>
  <li>item 5</li>
  <li>item 6</li>
  <li>item 7</li>
  <li>item 8</li>
  <li>item 9</li>
  <li>item 10</li>
  <li>item N</li>
</ul>

In JavaScript registrieren wir das paint worklet:

js
CSS.paintWorklet.addModule(
  "https://mdn.github.io/houdini-examples/cssPaint/intro/worklets/boxbg.js",
);

Im CSS definieren wir das background-image als ein paint() Typ mit dem Worklet-Namen boxbg, zusammen mit allen Variablen (z.B. --boxColor und --widthSubtractor), die das Worklet verwenden wird:

css
body {
  font: 1.2em / 1.2 sans-serif;
}
li {
  background-image: paint(boxbg);
  --boxColor: hsl(55 90% 60%);
}

li:nth-of-type(3n) {
  --boxColor: hsl(155 90% 60%);
  --widthSubtractor: 20;
}

li:nth-of-type(3n + 1) {
  --boxColor: hsl(255 90% 60%);
  --widthSubtractor: 40;
}

CSS paint() mit Parametern

Sie können optionale Argumente in der CSS paint() Funktion übergeben. In diesem Beispiel übergeben wir zwei Argumente, die steuern, ob das background-image auf einer Gruppe von Listenelementen filled ist oder einen stroke Umriss hat, und die width dieses Umrisses:

css
body {
  font: 1.2em / 1.2 sans-serif;
}

li {
  --boxColor: hsl(55 90% 60% / 100%);
  background-image: paint(hollowHighlights, stroke, 2px);
}

li:nth-of-type(3n) {
  --boxColor: hsl(155 90% 60% / 100%);
  background-image: paint(hollowHighlights, filled, 3px);
}

li:nth-of-type(3n + 1) {
  --boxColor: hsl(255 90% 60% / 100%);
  background-image: paint(hollowHighlights, stroke, 1px);
}

Wir haben eine benutzerdefinierte Eigenschaft im Selektorblock aufgenommen, die eine boxColor definiert. Benutzerdefinierte Eigenschaften sind für das PaintWorklet zugänglich.

Spezifikationen

Specification
CSS Painting API Level 1
# paint-notation

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch