Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

PaintWorkletGlobalScope

Limited availability

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

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Die PaintWorkletGlobalScope Schnittstelle der CSS Painting API repräsentiert das globale Objekt, das innerhalb eines Paint Worklet verfügbar ist.

Datenschutzbedenken

Um das Ausspähen besuchter Links zu vermeiden, ist diese Funktion derzeit in Browsern auf Chrome-Basis für <a>-Elemente mit einem href-Attribut sowie für deren Kinder deaktiviert. Einzelheiten finden Sie in Folgendem:

Instanzeigenschaften

Diese Schnittstelle erbt Eigenschaften von WorkletGlobalScope.

PaintWorkletGlobalScope.devicePixelRatio Schreibgeschützt Experimentell

Gibt das Verhältnis der physischen Pixel zu den logischen Pixeln des aktuellen Geräts zurück.

Instanzmethoden

Diese Schnittstelle erbt Methoden von WorkletGlobalScope.

PaintWorkletGlobalScope.registerPaint() Experimentell

Registriert eine Klasse zur programmatischen Generierung eines Bildes, wo eine CSS-Eigenschaft eine Datei erwartet.

Beispiele

Die folgenden drei Beispiele zeigen zusammen das Erstellen, Laden und Verwenden eines Paint Worklet.

Erstellen eines Paint-Worklet

Das folgende Beispiel zeigt ein Worklet-Modul. Dies sollte in einer separaten js-Datei stehen. Beachten Sie, dass registerPaint() ohne Referenz auf ein Paint Worklet aufgerufen wird.

js
class CheckerboardPainter {
  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;

    // Use `ctx` as if it was a normal canvas
    const colors = ["red", "green", "blue"];
    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();
      }
    }
  }
}

// Register our class under a specific name
registerPaint("checkerboard", CheckerboardPainter);

Laden eines Paint-Worklet

Das folgende Beispiel zeigt, wie das obige Worklet aus seiner js-Datei geladen wird und dies durch Feature-Erkennung tut.

js
if ("paintWorklet" in CSS) {
  CSS.paintWorklet.addModule("checkerboard.js");
}

Verwenden eines Paint-Worklet

Dieses Beispiel zeigt, wie ein Paint Worklet in einem Stylesheet verwendet wird, einschließlich der einfachsten Möglichkeit, eine Fallback-Lösung bereitzustellen, wenn CSS.paintWorklet nicht unterstützt wird.

css
textarea {
  background-image: url("checkerboard.png"); /* Fallback */
  background-image: paint(checkerboard);
}

Sie können auch die @supports at-rule verwenden.

css
@supports (background: paint(id)) {
  textarea {
    background-image: paint(checkerboard);
  }
}

Spezifikationen

Specification
CSS Painting API Level 1
# paintworkletglobalscope

Browser-Kompatibilität

Siehe auch