close

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

paint()

Limited availability

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

paint()CSS関数で、 PaintWorklet で生成された <image> の値を定義します。

構文

css
paint(workletName, ...parameters)

凡例

workletName

登録された Worklet の名前です。

parameters

PaintWorklet へ渡される省略可能な追加の引数です。

形式文法

<paint()> = 
paint( <ident> , <declaration-value>? )
この構文は CSS Painting API Level 1 による最新の標準を反映しています。すべてのブラウザーがすべての部分を実装しているわけではありません。サポート情報についてはブラウザーの互換性を参照してください。

基本的な CSS paint() の使用例

次の HTML があったとします。

html
<ul>
  <li>アイテム 1</li>
  <li>アイテム 2</li>
  <li>アイテム 3</li>
  <li>アイテム 4</li>
  <li>アイテム 5</li>
  <li>アイテム 6</li>
  <li>アイテム 7</li>
  <li>アイテム 8</li>
  <li>アイテム 9</li>
  <li>アイテム 10</li>
  <li>アイテム N</li>
</ul>

JavaScript では、描画ワークレットを登録します。

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

CSS では、background-imagepaint() 型として定義し、ワークレット名 boxbg をつけて、ワークレットが使用する変数(例:--box-color および --width-subtractor)を指定します。

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

li:nth-of-type(3n) {
  --box-color: hsl(155 90% 60%);
  --width-subtractor: 20;
}

li:nth-of-type(3n + 1) {
  --box-color: hsl(255 90% 60%);
  --width-subtractor: 40;
}

引数付きの CSS paint()

CSS の paint() 関数ではオプション引数を渡すことができます。この例では、リストアイテムのグループにおける background-imagefilled(塗りつぶし)にするか stroke(ストローク)の輪郭線を持つかを制御する 2 つの引数と、その輪郭線の width(幅)を渡しています。

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

li {
  --box-color: hsl(55 90% 60% / 100%);
  background-image: paint(hollow-highlights, stroke, 2px);
}

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

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

boxColor を定義しているセレクターブロックにカスタムプロパティを設定しました。カスタムプロパティは PaintWorklet にアクセスすることができます。

仕様書

Specification
CSS Painting API Level 1
# paint-notation

ブラウザーの互換性

関連情報