好的,我正在为我的网页创建一个系统,允许用户更改主题.我希望如何实现这一点:将所有 colored颜色 作为变量,并在CSS的:root部分中设置 colored颜色 .

我想做的是通过JavaScript更改这些 colored颜色 .我查了一下怎么做,但我try 的方法实际上都不管用.以下是我当前的代码:

CSS:

:root {
  --main-color: #317EEB;
  --hover-color: #2764BA;
  --body-color: #E0E0E0;
  --box-color: white;
}

JS:

(设置主题的代码,它是在单击按钮时运行的)-我没有费心将:root更改添加到其他两个主题,因为它在黑暗主题上不起作用

function setTheme(theme) {
  if (theme == 'Dark') {
    localStorage.setItem('panelTheme', theme);
    $('#current-theme').text(theme);
    $(':root').css('--main-color', '#000000');
  }
  if (theme == 'Blue') {
    localStorage.setItem('panelTheme',  'Blue');
    $('#current-theme').text('Blue');
    alert("Blue");
  }
  if (theme == 'Green') {
    localStorage.setItem('panelTheme', 'Green');
    $('#current-theme').text('Green');
    alert("Green");
  }
}

(加载html时运行的代码)

function loadTheme() {
  //Add this to body onload, gets the current theme. If panelTheme is empty, defaults to blue.
  if (localStorage.getItem('panelTheme') == '') {
    setTheme('Blue');
  } else {
    setTheme(localStorage.getItem('panelTheme'));
    $('#current-theme').text(localStorage.getItem('panelTheme'));
  }
}

它会显示alert ,但实际上不会更改任何内容.有人能给我指个方向吗?

推荐答案

感谢您@PVG提供链接.我不得不盯着它看了一会儿才明白是怎么回事,但我最终还是弄明白了.

我要找的神奇台词是这样的:

document.documentElement.style.setProperty('--your-variable', '#YOURCOLOR');

这正是我想要的,非常感谢!

Css相关问答推荐

我控制的自定义单选按钮无法重新 Select

如何使搜索框扩展并溢出其他内容

如何在悬停时缓慢更改渐变 colored颜色 ?

如何在CSS中平滑线性平移动画

VueJS3+Vutify中缺少一些CSS类

使用文本溢出约束内部 div:没有最大宽度的省略号(或类似的)

创建一个CSS动画的对角线线条.

使用CSS Grid是否可以跳过下一列?

如何使用来自单独模块的代码将自定义标头插入到使用 DT Shiny 呈现的表中?

Mat table - 保留第一列和复选框

Angular 以Angular 获取当前聚焦的元素

CSS 媒体查询不为桌面版的圣杯响应式布局包装 Flexbox 容器元素

使用 MUI 动态绘制多个边框

删除 IE10 Select 元素箭头

使用 HTML 和 CSS 滚动表格

输入/按钮元素不会在 flex 容器中缩小

内联块列表项中不需要的边距

为什么浏览器会为 CSS 属性创建供应商前缀?

如何使 window.scrollTo() 效果平滑

更改 html 列表中项目符号的 colored颜色 ?