【发布时间】:2016-10-26 10:33:30
【问题描述】:
是否可以使用 jQuery 更改 CSS 中使用的变量? 简单例子:
html {
--defaultColor: teal;
}
.box {
background: var(--defaultColor);
width: 100px;
height: 100px;
margin: 5px;
float: left;
}
.circle {
background: #eee;
border: 2px solid var(--defaultColor);
width: 100px;
height: 100px;
margin: 5px;
float: left;
border-radius: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="clickToChange" type="button" style="width: 100%;">Click to Change</button>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<br/>
<div class="circle"></div>
<div class="circle"></div>
<div class="circle"></div>
例如,如何将可变颜色从蓝绿色更改为红色?这个不行。
$("#clickToChange").click(function(){
$(html).css("--defaultColor", "red");
});
【问题讨论】:
-
这是我的 css 方法的猴子补丁,因此您可以将 css 变量与
.css方法 gist.github.com/jcubic/9ef9fa2561de8430e953e2fe62011c20 一起使用 -
@jcubic 我想说这应该作为一个单独的答案发布,因为其他答案都没有解决“链 jQuery 方法问题”,所以我不能写
$(body).css('--css-var', 'var-value').html('This is body element').addClass('some-class')。 -
@izogfif 这是一个过时的问题,你现在可以使用带有 CSS 属性的 jQuery 我认为它是在 3.4 版本中添加的,你应该使用 3.5,因为 中存在漏洞
-
设置单个 css 变量/属性:
$(":root").css("--defaultColor", "red");。 . .或者您可以设置多个 css 变量:$(":root").css({"--myVar0":myVal0, "--myVar1":myVal1});等...比非 jQuery 解决方案恕我直言。 (source)。