是否可以依赖CSSStyleDeclaration.setProperty()来验证CSS属性



以下内容在主要浏览器上似乎是一致的:

const stylesheet = document.createElement('style');
document.head.appendChild(stylesheet);
const sheet = document.styleSheets[0];
sheet.addRule('.temp', '{}', 0);
const style = sheet.cssRules[0].style;
console.log(style.color); // ""
style.setProperty("color", "*****");
console.log(style.color); // ""
style.setProperty("color", "red")
console.log(style.color); // "red"

但我想知道:style.setProperty("color", "*****")是否可以用来不设置属性,或者这只是目前主流浏览器上一个巧合的一致性功能。

如果通过"依赖于";你的意思是,它在标准中被指定了吗

相关标准是CSSOM,对于setProperty,它表示

  1. 让组件值列表是解析属性值的结果
  2. 如果组件值列表为空,则终止这些步骤

并且对于值的解析,它表示

  1. 让list是通过调用parse组件列表返回的值值中的值
  2. 根据CSS规范中属性属性的语法匹配列表
  3. 如果上述步骤失败,则返回null
  4. 退货清单

因此提供"*****"不在允许的颜色值列表中,将返回null

然后对于获得style.color,它说

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

,然后对于getPropertyValue((,它说

  1. 如果属性与声明中CSS声明的属性名称区分大小写匹配,则返回调用该声明的序列化CSS值的结果,并终止这些步骤

最后,null值被序列化为空字符串。

最新更新