JS操作元素样式
- 2018-3-16
- Web
在HTML中定义元素的样式有3种:
- 使用style特性定义针对特定元素的样式
- 使用<style>标签定义嵌入式标签
- 通过<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()方法。