PaintWorkletGlobalScope
Ограниченная доступность
Эта функция не является Базовой, так как она не работает в некоторых из самых широко используемых браузеров.
Экспериментальная: Это экспериментальная технология
Перед использованием в продакшене внимательно проверьте таблицу совместимости с браузерами таблицу совместимости с браузерами.
Интерфейс PaintWorkletGlobalScope API рисования CSS представляет собой глобальный объект, доступный внутри Worklet работы.
Вопросы конфиденциальности
Чтобы избежать утечки посещённых ссылок, эта функция в настоящее время отключена в браузерах на основе Chrome для элементов <a> с атрибутом href и для дочерних элементов таких элементов. Подробности см. ниже:
- Раздел «Рассмотрение конфиденциальности» API рисования CSS Раздел «Рассмотрение конфиденциальности»
- Проблема спецификации API рисования CSS «API рисования CSS раскрывает историю посещений»
Свойства экземпляра
Этот интерфейс наследует свойства от WorkletGlobalScope.
-
PaintWorkletGlobalScope.devicePixelRatioТолько для чтения Экспериментально -
Возвращает текущее соотношение физических пикселей к логическим пикселям устройства.
Методы экземпляра
Этот интерфейс наследует методы от WorkletGlobalScope.
-
PaintWorkletGlobalScope.registerPaint()Экспериментально -
Регистрирует класс для программного создания изображения, где CSS-свойство ожидает файл.
Примеры
Эти три примера вместе демонстрируют создание, загрузку и использование Worklet рисования.
Создать работу рисования
Следующий пример показывает модуль работы. Он должен находиться в отдельном файле js. Обратите внимание, что registerPaint() вызывается без ссылки на Worklet рисования.
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);
Загрузить работу рисования
Следующий пример демонстрирует загрузку вышеуказанной работы рисования из её файла js, используя обнаружение функций.
if ("paintWorklet" in CSS) {
CSS.paintWorklet.addModule("checkerboard.js");
}
Использовать работу рисования
Этот пример показывает, как использовать Worklet рисования в таблице стилей, включая самый простой способ предоставить резервный вариант, если CSS.paintWorklet не поддерживается.
<style>
textarea {
background-image: url(checkerboard);
background-image: paint(checkerboard);
}
</style>
<textarea></textarea>
Вы также можете использовать правило @supports.
@supports (background: paint(id)) {
background-image: paint(checkerboard);
}
Спецификации
| Спецификация |
|---|
| CSS Painting API Level 1 # paintworkletglobalscope |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
PaintWorkletGlobalScope |
65 | 79 | Нет | 52 | Нет | 65 | Нет | 47 | Нет | 9.0 | 65 |
devicePixelRatio |
65 | 79 | Нет | 52 | Нет | 65 | Нет | 47 | Нет | 9.0 | 65 |
registerPaint |
65 | 79 | Нет | 52 | Нет | 65 | Нет | 47 | Нет | 9.0 | 65 |
См. также
© 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