7

getPropertyValue如果我们只能使用一种方法,你能告诉我为什么我们需要使用这种方法getComputedStyle吗?

例如,据我了解,这将起作用:

var s = getComputedStyle(element, null).opacity;

这相当于以下内容:

var s = getComputedStyle(element, null).getPropertyValue('opacity');

我们可以getComputedStyle不使用getPropertyValue吗?

4

2 回答 2

7

根据旧的DOM L2 StylegetPropertyValue不需要:

CSS2Properties接口表示用于在CSSStyleDeclaration. 该接口的属性对应于 CSS2 中指定的所有属性。获取该接口的一个属性,相当于调用了CSSStyleDeclaration接口的getPropertyValue方法 。设置该接口的一个属性,就相当于调用该接口的方法 。setPropertyCSSStyleDeclaration

但是,不需要实现来支持它,因此使用getPropertyValue更安全。

CSS2Properties实现接口不需要 CSS 模块的一致实现。

但根据较新的CSSOMgetPropertyValue ,使用没有必须工作的驼峰式案例:

对于作为受支持的 CSS 属性的每个 CSS 属性属性,以下部分接口适用于通过将CSS 属性运行到 IDL 属性算法来 获得驼峰式属性情况。

partial interface CSSStyleDeclaration {
    attribute DOMString _camel-cased attribute;
};

camel-cased attribute属性在获取时必须返回调用结果,getPropertyValue()参数是运行IDL 属性到 CSS 属性算法的 骆驼大小写属性的结果。

设置camel-cased attribute属性必须调用 setProperty()第一个参数是运行IDL 属性到 CSS 属性算法的 结果骆驼大小写属性,作为给定值的第二个参数,并且没有第三个参数。抛出的任何异常都必须重新抛出。

因此,getPropertyValue不再需要检索 CSS 值。

于 2015-07-19T22:36:30.690 回答
0

我相信它适用于不能用点表示的属性,比如background-position. 虽然我想这会带来一个问题“为什么不使用括号表示法,即getComputedStyle(element, null)['background-position']?”。他们可能只是想要一个类的 getter 方法(CSSStyleDeclaration)。

于 2015-07-19T22:09:21.347 回答