检索CSS需要'getPropertyValue'方法吗?

El *_*ero 7 javascript css cssom

你能告诉我为什么我们只需要使用这个getPropertyValue方法就可以使用这个方法getComputedStyle吗?

例如,据我所知,这将起作用:

var s = getComputedStyle(element, null).opacity;
Run Code Online (Sandbox Code Playgroud)

这相当于以下内容:

var s = getComputedStyle(element, null).getPropertyValue('opacity');
Run Code Online (Sandbox Code Playgroud)

我们可以getComputedStyle不用getPropertyValue吗?

Ori*_*iol 6

根据旧的DOM L2风格,getPropertyValue不是必需的:

CSS2Properties接口代表了一种便捷机制,用于检索和设置属性CSSStyleDeclaration.此接口的属性对应于CSS2中指定的所有属性.获取此接口的属性等同于调用CSSStyleDeclaration接口的getPropertyValue方法 .设置此接口的属性等同于调用接口的方法 .setPropertyCSSStyleDeclaration

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

实现CSS2Properties接口不需要符合CSS模块的实现.

但根据较新的CSSOM,使用camel-case无需getPropertyValue工作:

对于每个CSS属性属性是一个支持的CSS属性,以下的局部界面适用其中骆驼外装属性是通过运行所获得的CSS属性IDL属性算法 属性.

partial interface CSSStyleDeclaration {
    attribute DOMString _camel-cased attribute;
};
Run Code Online (Sandbox Code Playgroud)

获取时的camel-cased attribute属性必须返回调用结果,getPropertyValue()其中参数是运行IDL属性的结果,用于camel-cased属性的CSS属性算法 .

设置camel-cased attribute属性必须调用 setProperty(),第一个参数是运行IDL属性的结果,用于camel-cased属性的CSS属性算法 ,第二个参数是给定值,没有第三个参数.必须重新抛出任何抛出的异常.

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