CSS 中的 Paint() 函数用于定义使用 PaintWorklet 生成的 <image> 值。 PaintWorklet 可以帮助开发者定义一些自定义的绘画函数,这些函数可以直接在 CSS 中用于背景、边框等各种属性。
语法
paint(workletName, ...parameters)
在上面的语法中,函数paint()包含以下参数:
workletName:指定注册的worklet的名称。
参数:指定要传递给 PaintWorklet 的附加参数。它是可选的。
CSS Paint(): 创建 Paint Worklet
以下示例演示了 Paint() 函数的使用。
您需要创建一个绘画工作集。要定义绘制工作集,您需要使用 CSS.paintWorklet.addModule('board.js') 加载 CSS 绘制工作集。要注册绘画工作集类,您需要使用registerPaint 函数。
在以下示例中,创建了一个绘画工作集并将其用作<textarea> 的背景图像。使用 <textarea>,因为它可以调整大小。
注意:与几乎所有新 API 一样,CSS Paint API 只能通过 HTTPS(或本地主机)使用。
<html>
<head>
<script>
if ("paintWorklet" in CSS) {
CSS.paintWorklet.addModule("/css/js/board.js");
}
</script>
<style>
textarea {
background-image: url(board);
background-image: paint(board);
}
</style>
</head>
<body>
<h2>CSS Function paont()</h2>
<textarea></textarea>
</body>
</html>
Javascript board.js 如下:
class TestPainter {
paint(ctx, geom, properties) {
// The global object here is a PaintWorkletGlobalScope
// Methods and properties can be accessed directly
// as global features or prefixed using self
// const dpr = self.devicePixelRatio;
// const dpr = window.devicePixelRatio;
// const dpr = Window.devicePixelRatio;
// Use `ctx` as if it was a normal canvas
const colors = ["yellow", "black", "white"];
const size = 32;
for (let y = 0; y < geom.height / size; y++) {
for (let x = 0; x < geom.width / size; x++) {
const color = colors[(x + y) % colors.length];
ctx.beginPath();
ctx.fillStyle = color;
ctx.rect(x * size, y * size, size, size);
ctx.fill();
}
}
}
}
// 以特定名称注册该类
registerPaint("board", TestPainter);