我在我的项目中使用css根变量来随时动态更改所有元素的颜色。
我的css看起来像
:root{
--primaryColor:aliceblue;
--secondaryColor:blue;
--errorColor:#cc2511;
}
使用CSS
.contentCss {
background-color: var(--primaryColor);
}
我可以访问JavaScript中的变量,如下所示,以动态更改值
document.documentElement.style.setProperty('--primaryColor', 'green');
它工作正常。我想得到一个数组中的所有变量,并根据它动态地改变每个变量的值。
7条答案
按热度按时间eqqqjvef1#
这个脚本将返回所有样式表中的根变量数组,从域中提供。由于CORS策略,域外的样式表不可访问。
注意:低阶样式表中的
root:
规则将覆盖父root
规则。brc7rcf02#
你可以用键声明一个关联数组作为节点属性,然后使用一个函数来设置你的主题:
我使用Atom和Bootstrap的一个工作示例:
>>编辑<<
Nadeem在下面的评论中更好地澄清了这个问题,不幸的是,我已经了解到
:root
可以通过getWindow.getComputedStyle()
访问,但这不会返回CSS变量声明。解决这个问题的方法是读取css文件,解析它的变量并将它们填充到一个关联数组中,但即使这样也假设您知道从哪里获得该css文件...
stszievb3#
我今天需要一个类似的解决方案。这里有一个quick one on codepen。
yv5phkfx4#
如果你知道你所有的变量都将被放在
:root
中,并且它是你第一个CSS文件中的第一个声明,你可以尝试这样做,你会得到一个Object中的所有变量:jogvjijk5#
这是另一个 typescript ,我继续RLoniello提到的工作。它还将其输出为JS对象,即converts --font-family:“Verdana”到fontFamily:Verdana.
mxg2im7a6#
不使用
.getComputedStyle()
Map到命名对象hgc7kmma7#
这里有一个函数式方法来获取所有
:root
CSS变量,如果你使用更严格的TypeScript配置,这些变量不会抛出类型错误: