以下内容在主要浏览器上似乎是一致的:
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,它表示
- 让组件值列表是解析属性值的结果
- 如果组件值列表为空,则终止这些步骤
并且对于值的解析,它表示
- 让list是通过调用parse组件列表返回的值值中的值
- 根据CSS规范中属性属性的语法匹配列表
- 如果上述步骤失败,则返回null
- 退货清单
因此提供"*****"不在允许的颜色值列表中,将返回null
然后对于获得style.color
,它说
骆驼大小写的属性在获取时必须返回调用getPropertyValue((的结果,参数是将IDL属性运行到骆驼大小写属性的CSS属性算法的结果。
,然后对于getPropertyValue((,它说
- 如果属性与声明中CSS声明的属性名称区分大小写匹配,则返回调用该声明的序列化CSS值的结果,并终止这些步骤
最后,null值被序列化为空字符串。