JS操作元素样式

JS操作元素样式

在HTML中定义元素的样式有3种:

  1. 使用style特性定义针对特定元素的样式
  2. 使用<style>标签定义嵌入式标签
  3. 通过<link>标签引用外部样式表

DOM Level 2 Style根据这3种应用样式的机制提供了一套API:

1. 访问和修改元素的style特性

任何支持style特性的HTML元素在Javascript中都有一个对应的style属性,在style特性中指定的任何CSS属性都将表现为这个style对象的相应属性,但需要注意的是对于使用短划线的CSS属性名会自动转换为驼峰大小写形式、float由于是Javascript中的保留字,不能做属性名,对应的Javascript属性为cssFloat(IE支持的是styleFloat)

常见的CSS属性及其在style对象中对应的属性名:

CSS属性 Javascript属性
background-image style.backgroundImage
color style.color
display style.display
font-family style.fontFamily
float cssFloat或styleFloat(IE)

2. 操作样式表

应用于文档的所有样式表是通过document.styleSheets集合来表示的,它既包括<style>标签定义的嵌入式样式表也包括通过<link>标签引用的外部样式表。

styleSheets对象提供了一些属性和方法,供开发者访问和修改样式表的样式规则,常见的有:

  • href:如果当前样式表是通过<link>标签引用的,则是样式表的URL,否则为null。通过这个属性我们可以手动筛选出外部样式表和嵌入式样式表。
  • cssRules:样式表中包含的样式规则的集合。IE不支持这个属性,但有一个类似的rules属性。
  • deleteRule(index):删除cssRules集合中集合中指定位置的规则。IE不支持这个方法,但有一个类似的removeRule()方法。
  • insertRule(rule,index):向cssRules集合中指定的位置插入rule字符串。IE不支持这个方法,但有一个类似的addRule()方法。