javascript - 如何通过 JavaScript 解析和更改实时网站上 CSS 样式表的颜色?

标签 javascript css

假设以下 CSS 样式表 用于实时网站。解析样式表上使用的所有颜色并使用 JavaScript 将值更改为新值的最佳方法是什么?

在这种情况下,我无法创建 CSS 类来通过纯 CSS 覆盖颜色,因此 JavaScript 是唯一的方法。没有可管理的方式来添加或编辑类。因为它们是动态的,并且在每个新产品发布时都会发生变化。并且更改应该只发生在客户端。无需存储覆盖。

目标是重新设置 UI 主题,用新的调色板覆盖现有颜色。每种旧颜色都将转换为新颜色。即#FFF -> #000 rgb(33,33,33) -> rgb(66,66,66)

.my-classdas90das {
  color: #000000;
}

.other-classAd21 {
  background: rgba(255,255,255);
  border-color: #222222;
}

.a-class438I {
  box-shadow: 1px 1px 1px rgba(44, 44, 44);
}

我的第一次尝试是通过以下方式循环访问属性:

document.styleSheets[1].cssRules[0].style

有没有更好的方法来做到这一点?

最佳答案

如果您可以控制样式表中的初始颜色,您可以使用 CSS custom properties并稍后在 JavaScript 中轻松更改它们。这是一个例子:

document.getElementById('change').addEventListener('click', () => {
  document.body.style.setProperty('--color1', 'red');
  document.body.style.setProperty('--color2', 'pink');
  document.body.style.setProperty('--color3', 'green');
  document.body.style.setProperty('--color4', 'purple');

});
:root {
  background: #eee;
  --color1: #555;
  --color2: rgba(255, 255, 255);
  --color3: #222222;
  --color4: rgba(44, 44, 44);
}

div,
button {
  margin: 1em;
}

.my-classdas90das {
  color: var(--color1);
}

.other-classAd21 {
  background: var(--color2);
  border: 2px solid var(--color3);
}

.a-class438I {
  box-shadow: 1px 1px 1px var(--color4);
}
<div class="my-classdas90das">
  my-classdas90das
</div>

<div class="other-classAd21">
  other-classAd21
</div>

<div class="a-class438I">
  a-class438I
</div>

<button id="change">Change Colors</button>

关于javascript - 如何通过 JavaScript 解析和更改实时网站上 CSS 样式表的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55856023/

相关文章:

html - Chrome 中的 float div 定位错误

javascript - 如何优化 Javascript 使其更短

javascript - 处理多个请求,而前一个请求不会阻塞下一个请求

javascript - Codility Peak JavaScript 实现

javascript - Jquery Fancybox 如何添加额外的导航按钮?

javascript - 使用 Javascript 或 JQuery 删除 Chrome 自动填充文本 onclick

javascript - 有没有办法在使用 JavaScript 点击刷新时将我的页面重定向到另一个页面

javascript - 带有 hammer.js 的整页轮播

html - 从CSS中的根继承?

javascript - 如何在 css 中获取页面宽度。