【发布时间】:2017-05-13 05:59:47
【问题描述】:
我有这些 CSS 变量来控制我的项目的颜色,所以我可以做主题。
html {
--main-background-image: url(../images/starsBackground.jpg);
--main-text-color: #4CAF50;
--main-background-color: rgba(0,0,0,.25);
--beta-background-color: rgba(0,0,0,.85);
}
但是,无论我如何尝试更改属性(两条注释行分别尝试),我得到的最接近的是返回无效属性。
function loadTheme() {
var htmlTag = document.getElementsByTagName("html");
var yourSelect = document.getElementById( "themeSelect" );
var selectedTheme = ( yourSelect.options[ yourSelect.selectedIndex ].value );
// htmlTag[0].setAttribute('--main-text-color', '#FFCF40');
// $("html").css("--main-text-color","#FFCF40");
}
【问题讨论】:
-
不,它是一个 css 变量。我在这篇文章中发现了它们
-
是的,这些 CSS 变量使用“本机”预处理器(基本上,它们最终会预先转换为真实的属性/属性)。顺便说一句,所有浏览器都没有广泛支持此功能(仅 FF,来自文章。我不知道其他浏览器) - 无论如何,如果你想在 JS 中操作它们,你的语法是不正确的。您需要操纵属性(似乎不是属性) - 所以试试
htmlTag[0].styles.setProperty('--main-text-color', '#FFCF40'); -
我复制了你的答案,现在的错误是它不能设置未定义的属性。我能麻烦你举个小提琴的例子吗?
-
查看我的答案以获得广泛支持的类似或更好的方法,查看布雷特关于如何解决您的问题的答案(浏览器支持有限)stackoverflow.com/a/41371037/600486
标签: javascript jquery css