CSSStyleSheet
Базовая реализация Широко доступна *
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с сентября 2015 года.
* Некоторые части этой функции могут иметь разный уровень поддержки.
Интерфейс CSSStyleSheet представляет собой отдельный CSS лист стилей и позволяет просматривать и изменять список правил, содержащихся в листе стилей. Он наследует свойства и методы от своего родителя, StyleSheet.
Лист стилей состоит из набора объектов CSSRule, представляющих каждое из правил в листе стилей. Правила содержатся в CSSRuleList, который можно получить из свойства cssRules листа стилей.
Например, одно правило может быть объектом CSSStyleRule содержащим стиль, такой как:
h1,
h2 {
font-size: 16pt;
}
Другое правило может быть правилом at-rule, таким как @import или @media, и так далее.
Различные способы получения объекта CSSStyleSheet описаны в разделе Получение листа стилей. Объект CSSStyleSheet также можно создать напрямую. Конструктор и методы CSSStyleSheet.replace() и CSSStyleSheet.replaceSync() — это новые дополнения к спецификации, позволяющие создавать стили листа.
Конструктор
CSSStyleSheet()-
Создает новый объект
CSSStyleSheet.
Свойства экземпляра
Наследует свойства от своего родителя, StyleSheet.
-
CSSStyleSheet.cssRulesТолько для чтения -
Возвращает живой
CSSRuleList, который поддерживает актуальный список объектовCSSRule, составляющих лист стилей.Примечание: В некоторых браузерах, если лист стилей загружается с другого домена, доступ к
cssRulesприводит кSecurityError. -
CSSStyleSheet.ownerRuleТолько для чтения -
Если этот лист стилей импортируется в документ с помощью правила
@import, свойствоownerRuleвозвращает соответствующееCSSImportRule; в противном случае значение этого свойства —null.
Методы экземпляра
Наследует методы от своего родителя, StyleSheet.
CSSStyleSheet.deleteRule()-
Удаляет правило по указанному индексу в списке правил листа стилей.
CSSStyleSheet.insertRule()-
Вставляет новое правило в указанную позицию листа стилей, используя текстовое представление правила.
CSSStyleSheet.replace()-
Асинхронно заменяет содержимое листа стилей и возвращает
Promise, который разрешается с обновлённым объектомCSSStyleSheet. CSSStyleSheet.replaceSync()-
Синхронно заменяет содержимое листа стилей.
Свойства наследия
Эти свойства — свойства наследия, введенные Microsoft; они поддерживаются для совместимости со старыми сайтами.
-
rulesТолько для чтения Устаревшее -
Свойство
rulesфункционально идентично стандартному свойствуcssRules; оно возвращает живойCSSRuleList, который поддерживает актуальный список всех правил в листе стилей.
Методы наследия
Эти методы — методы наследия, введенные Microsoft; они поддерживаются для совместимости со старыми сайтами.
-
addRule()Устаревшее -
Добавляет новое правило в лист стилей, используя селектор, к которому применяется стиль, и блок стиля, который применяется к соответствующим элементам.
Это отличается от
insertRule(), который принимает текстовое представление всего правила как одной строки. -
removeRule()Устаревшее -
Функционально идентично
deleteRule(); удаляет правило по указанному индексу из списка правил листа стилей.
Получение листа стилей
Лист стилей связан не более чем с одним Document, к которому он применяется (если не отключён). Список объектов CSSStyleSheet для данного документа можно получить, используя свойство Document.styleSheets. Конкретный лист стилей также можно получить из его объекта-владельца (Node или CSSImportRule), если таковой имеется.
Объект CSSStyleSheet создаётся и автоматически вставляется в список Document.styleSheets документа браузером при загрузке листа стилей для документа.
Ниже представлен (возможно, неполный) список способов, которыми лист стилей может быть связан с документом:
| Причина ассоциации листа стилей с документом | Присутствует в списке document. | Получение владельца элемента/правила по объекту листа стилей | Интерфейс для объекта владельца | Получение объекта CSSStyleSheet от владельца |
|---|---|---|---|---|
Элементы <style> и <link> в документе | Да | .ownerNode | HTMLLinkElement,HTMLStyleElement,или SVGStyleElement | HTMLLinkElement.sheet,HTMLStyleElement.sheet,или SVGStyleElement.sheet |
Правило CSS @import в других листах стилей, применённых к документу | Да | .ownerRule | CSSImportRule | .styleSheet |
<?xml-stylesheet ?> инструкция обработки в (не-HTML) документе | Да | .ownerNode | ProcessingInstruction | .sheet |
JavaScript import ... with { type: "css" } | Нет | N/A | N/A | N/A |
| Заголовок ссылки HTTP | Да | N/A | N/A | N/A |
| Листы стилей пользователя (по умолчанию) | Нет | N/A | N/A | N/A |
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильный | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
CSSStyleSheet |
73 | 79 | 101 | 60 | 16.4 | 73 | 101 | 52 | 16.4 | 11.0 | 73 |
CSSStyleSheet |
1 | 12 | 1 | ≤12.1 | 1 | 18 | 4 | ≤12.1 | 1 | 1.0 | 4.4 |
addRule |
1 | 12 | 68 | 15 | 1 | 18 | 68 | 14 | 1 | 1.0 | 4.4 |
cssRules |
1 | 12 | 1 | ≤12.1 | 1 | 18 | 4 | ≤12.1 | 1 | 1.0 | 4.4 |
deleteRule |
1 | 12 | 1 | ≤12.1 | 1 | 18 | 4 | ≤12.1 | 1 | 1.0 | 4.4 |
insertRule |
1 | 12 | 1 | ≤12.1 | 1 | 18 | 4 | ≤12.1 | 1 | 1.0 | 4.4 |
ownerRule |
1 | 12 | 1 | ≤12.1 | 1 | 18 | 4 | ≤12.1 | 1 | 1.0 | 4.4 |
removeRule |
1 | 12 | 68 | 15 | 3 | 18 | 68 | 14 | 1 | 1.0 | 4.4 |
replace |
73 | 79 | 101 | 60 | 16.4 | 73 | 101 | 52 | 16.4 | 11.0 | 73 |
replaceSync |
73 | 79 | 101 | 60 | 16.4 | 73 | 101 | 52 | 16.4 | 11.0 | 73 |
rules |
1 | 12 | 68 | 15 | 1 | 18 | 68 | 14 | 1 | 1.0 | 4.4 |
См. также
© 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/CSSStyleSheet