样式
在HTML中定义样式的方式有3种:通过<link/>元素包含外部样式表文件、使用<style/>元素定义嵌入式样式,以及使用style特性定义针对特定元素的样式,“DOM2级样式”模块围绕这3种应用样式的机制提供了一套API,要确定浏览器是否支持DOM2级定义的css能力
var supportsDOM2CSS=document.implementation.hasFeature("CSS","2.0");
访问元素的样式
HTML元素的style对象是CSSStyleDeclaration的实例,包含着行间样式信息,但不包括与外部样式表或嵌入式样式表经层叠而来的样式。在style特性中指定的任何CSS属性都将表现为这个style对象的相应属性。使用短划线(background-image)必须转化为驼峰大小写形式style.backgroundImage。float是JavaScript的保留字,不能用作属性名,“DOM2级样式”规范规定相应的属性名为cssFloat,IE则是styleFloat
取得一个DOM元素的引用,为其设置样式
myDiv.style.width="100px"; //最好始终带单位
“DOM2级样式”规范还为style对象定义了一些属性和方法
cssText:通过它访问到style特性中的代码
length:应用给元素的CSS属性的数量
parentRule:表示CSS信息的CSSRule对象
getPropertyCSSValue(propertyName):返回包含给定属性值的CSSValue对象,这个对象包含两个属性cssText和cssValueType,cssText属性的值与getPropertyValue()返回的值相同,cssValueType属性则是一个数值常量,表示值的类型:0表示继承的值、1表示基本的值、2表示值列表、3表示自定义的值、
getPropertyPriority(propertyName):如果给定属性使用了!important设置,则返回"important",否则,返回空字符串
getPropertyValue(propertyName):返回给定属性的字符串值
item(index):返回给定位置的CSS属性的名称
removeProperty(propertyName):从样式中删除属性,恢复默认样式(应用从其他样式表层叠而来的样式)
setProperty(propertyName,value,priority):将给定属性设置为相应的值,并加上优先权标志("important"或者一个空字符串)
cssText返回浏览器对style特性中CSS代码的内部表示,赋给cssText的值会重写整个style特性的值
myDiv.style.cssText="25px;height:30px";
设计length属性的目的,就是将其与item()方法配套使用,for语句遍历style对象集合
计算的样式(只读的)
“DOM2级样式”增强了document.defaultView,提供了getComputedStyle()方法,接收2个参数:要取得计算样式的元素和一个伪元素字符串(例如":after"),如不需要伪元素信息可以为null
getComputedStyle()方法返回一个CSSStyleDeclaration对象,包含当前元素的所有计算后的样式,某些浏览器返回的数据格式可能会不同(红色rgb(255,0,0)),IE不支持这个方法,但有一个类似的currentStyle属性
var style1=myDiv.currentStyle;
alert(style1.width); //"25px"