根据您的情况,这将是您最感兴趣的。
从所有 CSS 类中删除color
,并将颜色委托给一个新的、单独的类,就像这样。
.header {position: relative; font-size:24px;}
.whatever {position: relative; float:right;}
.theme-default {color:#00aba0; background-color:#fff;}
.theme-highlight {color:#FF0000; background-color:#000;}
因此,对于所有元素,请使用以下类属性:
<div class="header theme-default">This is the header</div>
<div class="whatever theme-default">This is whatever</div>
然后,要立即更改主题,请使用以下 jQuery:
$(".theme-default").addClass("theme-highlight");
编辑:来自用户输入的动态颜色变化
您指定您想要由用户确定的新颜色。使用用户输入完全动态地更改颜色可能会很棘手,但我已经阅读了一些内容,我认为可以做到。
$("#changeColor").on("click", function() {
var newColor = $("#color").val();
var oldColor = "#00aba0";
$("*").css("color", function(i, val) {
val = val.replace(/\s/g, "");
if (val == oldColor || val == hexToRgb(oldColor)) {
return newColor;
}
else {
return val;
}
});
});
查看脚本,您会发现我们使用了您原来的$("*")
选择器。然后我们使用.css()
,使第二个参数成为一个函数color
,该函数根据当前属性返回一个新属性。
这里的主要障碍是我们需要将每个元素的当前 CSScolor
与我们正在寻找的 CSS 进行比较。不同的浏览器返回不同的值$("element").css("color")
,因此为了标准化它们,我使用Tim Down 的hexToRgb()
函数为每种颜色生成可比较的 RGB 值。
在小提琴中,尝试更改样式表和内联中的默认颜色,您会看到脚本仍然有效。您必须扩展脚本,以便您可以操作oldColor
变量并在需要时更改颜色。
希望这可以帮助。