Документ: свойство adoptedStyleSheets
Базовая версия 2023
Новое
С марта 2023 года эта функция работает на последних версиях устройств и браузеров. Возможно, эта функция не будет работать на старых устройствах или браузерах.
Свойство adoptedStyleSheets интерфейса Document используется для задания массива созданных таблиц стилей, которые должны использоваться документом.
Примечание: Созданная таблица стилей — это таблица стилей, созданная программно с помощью CSSStyleSheet() конструктора (в отличие от таблицы стилей, созданной агентом пользователя при импорте таблицы стилей из скрипта, импортированной с помощью <style> и @import, или связанной через <link>).
Те же созданные таблицы стилей также могут быть разделены с одним или несколькими экземплярами ShadowRoot с помощью свойства ShadowRoot.adoptedStyleSheets. Изменение принятой таблицы стилей повлияет на все объекты, которые её используют.
Таблицы стилей в свойстве оцениваются вместе с другими таблицами стилей документа с использованием алгоритма каскадирования CSS. В местах, где разрешение правил учитывает порядок таблиц стилей, adoptedStyleSheets предполагается упорядочить после тех, что в Document.styleSheets.
Только таблицы стилей, созданные с помощью CSSStyleSheet() конструктора в контексте текущего Document, могут быть приняты.
Значение
Значение — массив экземпляров CSSStyleSheet, которые должны быть созданы с помощью CSSStyleSheet() конструктора в контексте того же Document.
Если массив необходимо изменить, используйте локальные мутации, например, push(). Сами экземпляры CSSStyleSheet также могут быть изменены, и эти изменения применятся везде, где таблица стилей принята.
В более ранней версии спецификации массив не был изменяемым, поэтому единственный способ добавить новые таблицы стилей заключался в присвоении нового массива свойству adoptedStyleSheets.
Исключения
-
NotAllowedErrorDOMException -
Один из экземпляров
CSSStyleSheetв массиве не был создан с помощьюCSSStyleSheet()конструктора или был создан в другом документе, например, в фрейме.
Примеры
Принятие таблицы стилей
Код ниже демонстрирует построение таблицы стилей, а затем вызов CSSStyleSheet.replaceSync() для добавления правила в таблицу. Затем таблица стилей добавляется в массив и присваивается свойству adoptedStyleSheets.
// Create an empty "constructed" stylesheet
const sheet = new CSSStyleSheet();
// Apply a rule to the sheet
sheet.replaceSync("a { color: red; }");
// Apply the stylesheet to a document
document.adoptedStyleSheets = [sheet];
Мы можем добавить новое правило к таблице стилей с помощью CSSStyleSheet.insertRule().
sheet.insertRule("* { background-color: blue; }");
// The document will now have blue background.
Добавление новой таблицы стилей
Чтобы добавить новую таблицу стилей к свойству adoptedStyleSheets, нужно создать и присвоить новый объединённый массив. Это показано ниже с использованием синтаксиса spread:
const extraSheet = new CSSStyleSheet();
extraSheet.replaceSync("p { color: green; }");
// Combine the existing sheets and new one
document.adoptedStyleSheets = [...document.adoptedStyleSheets, extraSheet];
Разделяемая таблица стилей с Shadow DOM
Мы можем аналогичным образом разделить таблицу стилей с корнем тени.
// Create an element in the document and then create a shadow root:
const node = document.createElement("div");
const shadow = node.attachShadow({ mode: "open" });
//Adopt the same sheet into the shadow DOM
shadow.adoptedStyleSheets = [sheet];
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
adoptedStyleSheets |
73 | 79 | 101 | 60 | 16.4 | 73 | 101 | 50 | 16.4 | 11.0 | 73 |
См. также
© 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/Document/adoptedStyleSheets