使用jquery或javascript更改CSS根变量

Mer*_*ial 6 css jquery css3

我在我的网页中使用CSS变量并制作一种主题颜色,

:root {
    --themeColor: #0afec0;
    --hoverColor: #fff;
    --bodyColor:  #EEF1EF;
}
Run Code Online (Sandbox Code Playgroud)

现在我已经var(--themeColor)到处使用,我想--themeColor在每次重新加载时分配一个随机颜色.这可能吗?

car*_*mba 9

您可以通过以下方式轻松完成此操作:

document.documentElement.style.setProperty('--themeColor', 'red');
Run Code Online (Sandbox Code Playgroud)

更新: 不确定问题是否就像我想的那样改变颜色.现在我还添加了一个getRandomColor()例子.只是为了获得随机的东西可能是一大堆工作,这取决于你是否想要保存用户最后使用过的颜色......

// array with colors
var colors = [
  "red",
  "green",
  "lime",
  "purple",
  "blue"
];

// get random color from array
function getColor() {
   return colors[
     Math.floor(Math.random() * colors.length)
   ];
}

// Set the color from array
document.documentElement.style.setProperty('--themeColor', getColor());
Run Code Online (Sandbox Code Playgroud)
:root {
    --themeColor: orange;
}

a {
  color: var(--themeColor)
}
      
div {
  width: 100px;
  height: 100px;
  background-color: var(--themeColor);
}
Run Code Online (Sandbox Code Playgroud)
<a href="#">Hello world</a>
<div>Test</div>
Run Code Online (Sandbox Code Playgroud)


Use*_*Cat 8

您可以按如下方式在 jquery 中执行此操作(使用与 caramba 相同的示例):

$(':root').css('--themeColor', (color = ["red", "green", "lime", "purple", "blue"])[Math.floor(Math.random() * color.length)]);
Run Code Online (Sandbox Code Playgroud)
:root {
  --themeColor: orange;
}

a {
  color: var(--themeColor)
}

div {
  width: 100px;
  height: 100px;
  background-color: var(--themeColor);
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<a href="#">Hello world</a>
<div>Test</div>
Run Code Online (Sandbox Code Playgroud)

这可能不适用于所有版本的 JQuery!