Spec-Zone.ru › Web APIs

PaintWorkletGlobalScope: метод registerPaint()

Ограниченная доступность

Эта функция не является Baseline, так как она не работает в некоторых из наиболее широко используемых браузеров.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Экспериментально: Это экспериментальная технология
Перед использованием в производстве внимательно проверьте таблицу совместимости браузеров.

Метод registerPaint() интерфейса PaintWorkletGlobalScope регистрирует класс для программного создания изображения, где свойство CSS ожидает файл.

Синтаксис

registerPaint(name, classRef)

Параметры

name

Имя класса worklet для регистрации.

classRef

Ссылка на класс, реализующий worklet.

Возвращаемое значение

None (undefined).

Исключения

TypeError

Выбрасывается, когда один из аргументов недействителен или отсутствует.

InvalidModificationError DOMException

Выбрасывается, когда worklet с указанным именем уже существует.

Примеры

В следующем примере показана регистрация модуля worklet. Он должен быть в отдельном файле js. Обратите внимание, что registerPaint() вызывается без ссылки на PaintWorkletGlobalScope. Сам файл загружается с помощью CSS.paintWorklet.addModule() (документировано здесь в родительском классе PaintWorklet, в Worklet.addModule().

/* checkboardWorklet.js */

class CheckerboardPainter {
  paint(ctx, geom, properties) {
    // 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);

Первый шаг в использовании paintworklet — определение paint worklet с помощью функции registerPaint(), как показано выше. Для использования его необходимо зарегистрировать с помощью метода CSS.paintWorklet.addModule():

<script>
  CSS.paintWorklet.addModule("checkboardWorklet.js");
</script>

Затем вы можете использовать функцию paint() CSS в вашем CSS там, где допустимо значение <image>.

li {
  background-image: paint(checkerboard);
}

Спецификации

Спецификация
CSS Painting API Level 1
# dom-paintworkletglobalscope-registerpaint

Совместимость браузеров

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
registerPaint 65 79 Нет 52 Нет 65 Нет 47 Нет 9.0 65

См. также

  • CSS Painting API
  • API Houdini

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/PaintWorkletGlobalScope/registerPaint

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API