继续创造,加速成长!这是我参与「日新方案 10 月更文挑战」的第7天,点击检查活动概况
运用js
操作款式咱们一般操作的是dom
的style
特点,也便是咱们所说的行内款式,那么有没有一种方法能够操作css
文件中的款式呢?答案是必定的,咱们能够运用cssom
来操作css
文件中的款式。
1. cssom
cssom
是css
目标模型,它是css
的一个笼统表明,它允许咱们运用js
来操作css
文件中的款式,它是css
的一个笼统表明,它允许咱们运用js
来操作css
文件中的款式。
既然是cssom
是目标模型,那么就能够运用js
来操作它,那么咱们就能够运用js
来操作css
文件中的款式了。
2. cssom的运用
2.1 获取cssom
咱们能够运用document.styleSheets
来获取cssom
,它是一个StyleSheetList
目标,它是一个类数组目标,咱们能够运用[index]
来获取对应的cssom
,也能够运用item(index)
来获取对应的cssom
。
styleSheets
记载的是当时页面中一切的css
文件,这儿的css
文件包括link
标签引进的css
文件,@import
引进的css
文件,以及style
标签中的css
款式,他们会依次按照引进的次序存放在styleSheets
中。
/* 获取cssom */
const cssom = document.styleSheets[0];
上面这段代码中,咱们获取了第一个cssom
,咱们能够经过cssom
来操作css
文件中的款式。
上面的代码能够在任何站点中进行测试,咱们能够在控制台中输入上面的代码,然后输入cssom
,就能够看到cssom
的信息了。
2.2 cssom的特点
cssom
有很多的特点,咱们能够经过cssom
来获取css
文件中的款式,下面咱们来看一下cssom
的特点。
2.2.1 cssRules
cssRules
是一个CSSRuleList
目标,它是一个类数组目标,咱们能够运用[index]
来获取对应的cssRule
,也能够运用item(index)
来获取对应的cssRule
。
cssRules
记载的是当时cssom
中的一切的cssRule
,每一个cssRule
都是一个css
规矩,它包含了一个style
标签、一个link
标签或许一个@import
引进的css
文件中的一切的款式。
/* 获取cssRules */
const cssRules = cssom.cssRules;
上面这段代码中,咱们获取了cssom
中的一切的cssRule
,咱们能够经过cssRules
来操作css
文件中的款式。
cssRules
在引用源非本域的情况下,是不可访问的,也便是说,如果咱们在a.com
中引用了b.com
中的css
文件,那么咱们就无法获取到b.com
中的cssRules
。
2.2.2 href
href
是一个字符串,它记载的是当时cssom
对应的css
文件的途径。
/* 获取href */
const href = cssom.href;
href
特点中记载的是当时cssom
对应的css
文件的途径,如果当时cssom
是一个style
标签中的css
款式,那么href
的值为null
。
只要当cssom
是一个link
标签或许一个@import
引进的css
文件时,href
才有值。
2.2.3 ownerNode
ownerNode
是一个Node
目标,它记载的是当时cssom
对应的css
文件的节点。
/* 获取ownerNode */
const ownerNode = cssom.ownerNode;
ownerNode
特点中记载的是当时cssom
对应的css
文件的节点,如果当时cssom
是一个style
标签中的css
款式,那么ownerNode
的值为style
标签。
如果当时cssom
是一个link
标签中的css
款式,那么ownerNode
的值为link
标签。
2.2.4 type
type
是一个字符串,它记载的是当时cssom
对应的css
文件的type
特点。
/* 获取type */
const type = cssom.type;
type
特点中记载的是当时cssom
对应的css
文件的type
特点,如果当时cssom
是一个style
标签中的css
款式,那么type
的值为text/css
。
2.2.5 disabled
disabled
是一个布尔值,它记载的是当时cssom
对应的css
文件是否被禁用。
/* 获取disabled */
const disabled = cssom.disabled;
disabled
特点中记载的是当时cssom
对应的css
文件是否被禁用,disabled == false
不能保证当时cssom
对应的css
文件是启用的,因为css
文件可能被其他的css
文件覆盖了,或许被移除了。
3. CSSRule
CSSRule
是一个笼统类,它是一切cssRule
的基类,它有一个type
特点,它记载的是当时cssRule
的类型。
type
已经被标记废弃了,咱们能够经过instanceof
来判别当时cssRule
的类型。
/* 判别cssRule的类型 */
if (cssRule instanceof CSSStyleRule) {
// cssRule是CSSStyleRule
} else if (cssRule instanceof CSSImportRule) {
// cssRule是CSSImportRule
} else if (cssRule instanceof CSSMediaRule) {
// cssRule是CSSMediaRule
} else if (cssRule instanceof CSSFontFaceRule) {
// cssRule是CSSFontFaceRule
} else if (cssRule instanceof CSSPageRule) {
// cssRule是CSSPageRule
} else if (cssRule instanceof CSSKeyframesRule) {
// cssRule是CSSKeyframesRule
} else if (cssRule instanceof CSSKeyframeRule) {
// cssRule是CSSKeyframeRule
} else if (cssRule instanceof CSSNamespaceRule) {
// cssRule是CSSNamespaceRule
} else if (cssRule instanceof CSSSupportsRule) {
// cssRule是CSSSupportsRule
} else if (cssRule instanceof CSSCounterStyleRule) {
// cssRule是CSSCounterStyleRule
}
3.1 CSSStyleRule
CSSStyleRule
是一个类,它表明一个css
款式规矩,它有一个selectorText
特点,它记载的是当时css
款式规矩的选择器。
/* 获取css款式规矩的选择器 */
const selectorText = cssStyleRule.selectorText;
selectorText
特点中记载的是当时css
款式规矩的选择器,便是咱们在css
文件中写的选择器。
CSSStyleRule
还有一个style
特点,它记载的是当时css
款式规矩的款式。
/* 获取css款式规矩的款式 */
const style = cssStyleRule.style;
style
特点中记载的是当时css
款式规矩的款式,便是咱们在css
文件中写的款式。
当然它并不是只要咱们写的款式,它还包含了浏览器默许的款式,比方body
标签的默许款式,本质上它是一个CSSStyleDeclaration
目标,包含了当时css
款式规矩的一切款式。
3.2 CSSImportRule
CSSImportRule
是一个类,它表明一个css
导入规矩,它有一个href
特点,它记载的是当时css
导入规矩的href
特点。
/* 获取css导入规矩的href */
const href = cssImportRule.href;
href
特点中记载的是当时css
导入规矩的href
特点,便是咱们在css
文件中写的href
特点。
CSSImportRule
还有一个styleSheet
特点,它记载的是当时css
导入规矩的款式表。
/* 获取css导入规矩的款式表 */
const styleSheet = cssImportRule.styleSheet;
styleSheet
特点中记载的是当时css
导入规矩的款式表,便是咱们在css
文件中写的款式表。
3.3 CSSMediaRule
CSSMediaRule
是一个类,它表明一个css
媒体规矩,它有一个media
特点,它记载的是当时css
媒体规矩的媒体。
/* 获取css媒体规矩的媒体 */
const media = cssMediaRule.media;
media
特点中记载的是当时css
媒体规矩的媒体,便是咱们在css
文件中写的媒体。
CSSMediaRule
还有一个cssRules
特点,它记载的是当时css
媒体规矩的款式规矩。
/* 获取css媒体规矩的款式规矩 */
const cssRules = cssMediaRule.cssRules;
cssRules
特点中记载的是当时css
媒体规矩的款式规矩。
3.4 CSSFontFaceRule
CSSFontFaceRule
是一个类,它表明一个css
字体规矩,它有一个style
特点,它记载的是当时css
字体规矩的款式。
/* 获取css字体规矩的款式 */
const style = cssFontFaceRule.style;
后边的就不一一介绍了,究竟大部分都不常用,我们能够自己去检查:
- CSSStyleRule
- CSSImportRule
- CSSMediaRule
- CSSFontFaceRule
- CSSPageRule
- CSSKeyframesRule
- CSSKeyframeRule
- CSSNamespaceRule
- CSSSupportsRule
- CSSCounterStyleRule
总结
本文主要介绍了css
款式规矩的类型,以及它们的特点,这次仅仅一次扩展阅览,我们能够自己去检查,究竟这些规矩并不常用。
自己也仅仅刚研究了一下,有不对的地方欢迎我们纠正。