我有一个CSS自定义属性,我正在try 使用普通的JavaScript动态更改该属性.我已经创建了一个新的CSSStyleSheet
对象,并且已经使用下面的代码向其添加了样式.
let sheet = new CSSStyleSheet();
sheet.insertRule(".color3.shade500 {--lightness: 0; --chroma: 0; --hue: 0}");
我遇到的问题是,我想在给定的CSSStyleRule
范围内更改单个属性,但我没有任何运气.需要根据页面上输入的值来更改这些值.我可以使用下面的代码访问正确的CSSStyleRule
,该代码是for循环的一部分.
console.log(sheet.rules[y].selectorText);
这会导致将以下内容打印到控制台:
CSSStyleRule {selectorText: '.color3.shade500', style: CSSStyleDeclaration, styleMap: StylePropertyMap, cssRules: CSSRuleList, type: 1, ...}
cssRules: CSSRuleList {length: 0}
cssText: ".color3.shade500 { --lightness: 0; --chroma: 0; --hue: 0; }"
parentRule: null
parentStyleSheet: CSSStyleSheet {ownerRule: null, cssRules: CSSRuleList, rules: CSSRuleList, type: 'text/css', href: null, ...}
selectorText: ".color3.shade500"
style: CSSStyleDeclaration {0: '--lightness', 1: '--chroma', 2: '--hue', accentColor: '', additiveSymbols: '', alignContent: '', alignItems: '', alignSelf: '', ...}
styleMap: StylePropertyMap {size: 3}
type: 1
[[Prototype]]: CSSStyleRule
我的问题是,我应该使用什么命令来更新单个属性,而不考虑规则中的其他属性?我在Mozilla开发者网站here上找到了关于CSSStyleSheet
函数的文档,但我还没有成功地try 实现replace()
函数,我也不知道这是不是应该使用的正确函数.