你能告诉我,如果我们只使用getComputedStyle
方法,为什么我们需要使用getPropertyValue
方法?
例如,这将工作,据我所知:
var s = getComputedStyle(element, null).opacity;
等价于以下内容:
var s = getComputedStyle(element, null).getPropertyValue('opacity');
可以用getComputedStyle
代替getPropertyValue
吗?
根据旧的DOM L2 Style,不需要getPropertyValue
:
CSS2Properties
接口代表了一种便利的机制检索和设置CSSStyleDeclaration
中的属性。该接口的属性对应所有属性在CSS2中指定。获取该接口的属性为方法的getPropertyValue
方法等效CSSStyleDeclaration接口。设置此属性方法的setProperty
方法等效于CSSStyleDeclaration
接口。
但是,实现不需要支持它,所以使用getPropertyValue
更安全。
不需要CSS模块的一致性实现实现
CSS2Properties
接口
但是根据较新的CSSOM,使用没有getPropertyValue
的骆驼大小写必须工作:
对于每个支持的CSS属性属性以下部分接口适用于驼色大小写属性通过运行CSS属性到IDL属性算法得到。
partial interface CSSStyleDeclaration { attribute DOMString _camel-cased attribute; };
camel-cased attribute
属性在获取时必须返回调用getPropertyValue()
的结果,参数为运行IDL属性到CSS属性算法的结果<<em>"骆峰式"属性/em>。设置
camel-cased attribute
属性必须调用setProperty()
,第一个参数是运行IDL属性到CSS属性的算法骆驼大小写属性,作为给定值的第二个参数,没有第三个参数。任何抛出的异常都必须重新抛出。
因此,不再需要getPropertyValue
来检索CSS值
我认为这是对于不能点标记的属性,如background-position
。虽然我认为这带来了一个问题"为什么不使用括号符号,即getComputedStyle(element, null)['background-position']
?"。他们可能只是想要一个getter方法(CSSStyleDeclaration)。