CSSStyleSheet 类型表示 CSS 样式表,包括使用<link>元素和通过<style>元素定义的样式表。 注意,这两个元素本身分别是 HTMLLinkElement 和 HTMLStyleElement。CSSStyleSheet 类型是一 个通用样式表类型,可以表示以任何方式在 HTML 中定义的样式表。另外,元素特定的类型允许修改 HTML 属性,而 CSSStyleSheet 类型的实例则是一个只读对象(只有一个属性例外)。
CSSStyleSheet 类型继承 StyleSheet,后者可用作非 CSS 样式表的基类。以下是 CSSStyleSheet 从 StyleSheet 继承的属性。
disabled,布尔值,表示样式表是否被禁用了(这个属性是可读写的,因此将它设置为 true 会禁用样式表)。
href,如果是使用<link>包含的样式表,则返回样式表的 URL,否则返回 null。
media,样式表支持的媒体类型集合,这个集合有一个 length 属性和一个 item()方法,跟所 有 DOM 集合一样。同样跟所有 DOM 集合一样,也可以使用中括号访问集合中特定的项。如果
样式表可用于所有媒体,则返回空列表。
ownerNode,指向拥有当前样式表的节点,在 HTML 中要么是<link>元素要么是<style>元素
(在 XML 中可以是处理指令)。如果当前样式表是通过@import 被包含在另一个样式表中,则这 个属性值为 null。
注意 浏览器虽然会返回样式值,但返回值的格式不一定相同。比如,Firefox和Safari会 把所有颜色值转换为 RGB 格式(如红色会变成 rgb(255,0,0)),而 Opera 把所有颜色转 换为十六进制表示法(如红色会变成#ff0000)。因此在使用 getComputedStyle()时一 定要多测试几个浏览器。
parentStyleSheet,如果当前样式表是通过@import 被包含在另一个样式表中,则这个属性 指向导入它的样式表。
title,ownerNode 的 title 属性。
type,字符串,表示样式表的类型。对 CSS 样式表来说,就是"text/css"。
上述属性里除了 disabled,其他属性都是只读的。除了上面继承的属性,CSSStyleSheet 类型
还支持以下属性和方法。
cssRules,当前样式表包含的样式规则的集合。
ownerRule,如果样式表是使用@import 导入的,则指向导入规则;否则为 null。
deleteRule(index),在指定位置删除 cssRules 中的规则。
insertRule(rule, index),在指定位置向 cssRules 中插入规则。 18
document.styleSheets 表示文档中可用的样式表集合。这个集合的 length 属性保存着文档中 样式表的数量,而每个样式表都可以使用中括号或 item()方法获取。来看这个例子:
## 样式
```js
let sheet = null;
for (let i = 0, len = document.styleSheets.length; i < len; i++) {
sheet = document.styleSheets[i];
console.log(sheet.href);
}
```
以上代码输出了文档中每个样式表的 href 属性(<style>元素没有这个属性)。 document.styleSheets 返回的样式表可能会因浏览器而异。所有浏览器都会包含<style>元素 和 rel 属性设置为"stylesheet"的<link>元素。IE、Opera、Chrome 也包含 rel 属性设置为
"alternate stylesheet"的<link>元素。
通过<link>或<style>元素也可以直接获取 CSSStyleSheet 对象。DOM 在这两个元素上暴露了
在 Opera 中是可以修改的。 26 style,返回 CSSStyleDeclaration 对象,可以设置和获取当前规则中的样式。
sheet 属性,其中包含对应的 CSSStyleSheet 对象。
## 1. CSS 规则
CSSRule 类型表示样式表中的一条规则。这个类型也是一个通用基类,很多类型都继承它,但其中
最常用的是表示样式信息的 CSSStyleRule(其他 CSS 规则还有@import、@font-face、@page 和 @charset 等,不过这些规则很少需要使用脚本来操作)。以下是 CSSStyleRule 对象上可用的属性。
cssText,返回整条规则的文本。这里的文本可能与样式表中实际的文本不一样,因为浏览器
内部处理样式表的方式也不一样。Safari 始终会把所有字母都转换为小写。
parentRule,如果这条规则被其他规则(如@media)包含,则指向包含规则,否则就是 null。
parentStyleSheet,包含当前规则的样式表。
selectorText,返回规则的选择符文本。这里的文本可能与样式表中实际的文本不一样,因为
浏览器内部处理样式表的方式也不一样。这个属性在 Firefox、Safari、Chrome 和 IE 中是只读的,
type,数值常量,表示规则类型。对于样式规则,它始终为 1。
在这些属性中,使用最多的是 cssText、selectorText 和 style。cssText 属性与 style.cssText 类似,不过并不完全一样。前者包含选择符文本和环绕样式声明的大括号,而后者则只包含样式声明(类 似于元素上的 style.cssText)。此外,cssText 是只读的,而 style.cssText 可以被重写。