样式操作

[ CSS 脚本化?!] 所谓样式操作,就是通过 JS 进行样式的获取和更新。


[1] HTMLElement.style   能够访问和修改元素的内联样式

  • 访问元素的单个内联属性

  • 修改元素的单个内联属性


[ cssText属性 ] style 还具有 cssText 的属性,它包含了一个元素所有的内联样式规则。

  • 获取元素的所有内联属性

  • 批量修改元素的内联属性

通常来讲,访问元素属性只使用 style 是不够的,因为它只包含内联属性,而不包含样式表中的其他任何声明。

在实际场景中,比较适合操作特定元素的样式,如手机端网页中的搜索栏需要根据用户的不同手势动态显示或隐藏。


[2] window.getComputedStyle

该方法弥补了 style 属性只能获取内联样式的不足,它可以获取到最终应用在元素上的CSS属性对象(包括内联和样式表)。


[3] HTMLElement.className   更新 className

对于在样式表使用 CSS 类选择器定义的 CSS 样式,可以修改元素的类名来操作 CSS 样式。


[4] 操作样式表

  • 动态加载 CSS 样式片段

  • 动态插入 CSS 外部样式表

通过动态的替换样式表可以改变整个网站的外观,如网站的换肤功能。


[5] DOM CSSStyleSheet 接口

[ 样式表 ]通过 document.styleSheets 可以获取HTML中通过 link 元素和 style 元素包含的所有样式表;样式表是一个 CSSStyleSheet 对象,这个对象还可以通过 link 或 style 元素的 sheet 属性访问到。

它的 cssRules 属性包含了样式表中所有的 CSS 规则。

[ 样式规则 ]cssRules 中的每一项都是一个 CSSStyleRule 对象,表示 CSS 样式表中一个单独的规则集,可以通过这个对象操作样式表中的每一条规则。

CSSStyleRule 对象的 style 属性是一个 CSSStyleDeclaration 对象,表示一个 CSS 属性键值对的集合。除样式表中定义的 CSS 属性,元素的 style 属性获得的内联样式及通过 getComputedStyle 方法获取的样式属性,也是该对象。

通过样式表对象上提供的各种方法,我们可以查询和修改样式表中的规则,也可以达到操作样式的目的。