如何使用Javascript重新定义CSS类

Axe*_*xel 4 javascript css

假设我们已经定义了一个CSS类,它正在应用于页面上的各种元素.

colourful
{
    color: #DD00DD;
    background-color: #330033;
}
Run Code Online (Sandbox Code Playgroud)

人们抱怨颜色,他们不喜欢粉红色/紫色.因此,您希望让他们能够按照自己的意愿更改样式,并且可以选择自己喜欢的颜色.你有一个小的颜色选择器小部件调用Javascript函数:

function changeColourful(colorRGB, backgroundColorRGB)
{
    // answer goes here
}
Run Code Online (Sandbox Code Playgroud)

这个功能的主体是什么?

目的是当用户在颜色选择器上选择新颜色时,所有元素class="colourful"都将改变其样式.

ale*_*lex 6

我实际上会实现这个服务器端; 只需在用户的会话中存储用户的首选颜色(通过cookie或任何好的和简单的方式)并动态生成CSS,即

colourful {
  color: ${userPrefs.colourfulColour};
  background-color: ${userPrefs.colourfulBackgroundColour};
} 
Run Code Online (Sandbox Code Playgroud)

如果它真的更适合你通过Javascript做到这一点,你可以使用Javascript操纵CSS.例如,见:

  • 如果您使用服务器端,请将依赖于服务器的项目与其余样式隔离,以便浏览器仍然可以缓存样式表的其余部分。 (2认同)

eye*_*ess 5

var setStyleRule = function(selector, rule) {
    var stylesheet = document.styleSheets[(document.styleSheets.length - 1)];
    if(stylesheet.addRule) {
        stylesheet.addRule(selector, rule)
    } else if(stylesheet.insertRule) {
        stylesheet.insertRule(selector + ' { ' + rule + ' }', stylesheet.cssRules.length);
    }
};
Run Code Online (Sandbox Code Playgroud)


End*_*ssa 4

我不知道如何直接操作类,但你可以有效地做同样的事情。这是 jQuery 中的一个示例。

$('.colourful').css('background-color', 'purple').css('color','red');
Run Code Online (Sandbox Code Playgroud)

在纯 JavaScript 中,您将需要做更多的工作。