如何使用Javascript添加CSS规则(如强{颜色:红色})?


当前回答

如果你知道页面中至少存在一个<style>标签,使用这个函数:

CSS=function(i){document.getElementsByTagName('style')[0].innerHTML+=i};

用法:

CSS("div{background:#00F}");

其他回答

如果你知道页面中至少存在一个<style>标签,使用这个函数:

CSS=function(i){document.getElementsByTagName('style')[0].innerHTML+=i};

用法:

CSS("div{background:#00F}");

在现代浏览器中,您可以使用document。adoptedStyleSheets添加CSS。

const sheet = new CSSStyleSheet();
sheet.replace("strong { color: red; }");
document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];

这种方法的一个优点是,您甚至不需要等待<head>元素可用,这可能是早期运行的浏览器扩展代码所关注的问题。

简单而直接的方法是在文档中创建并添加一个新的样式节点。

// Your CSS as text
var styles = `
    .qwebirc-qui .ircwindow div { 
        font-family: Georgia,Cambria,"Times New Roman",Times,serif;
        margin: 26px auto 0 auto;
        max-width: 650px;
    }
    .qwebirc-qui .lines {
        font-size: 18px;
        line-height: 1.58;
        letter-spacing: -.004em;
    }
    
    .qwebirc-qui .nicklist a {
        margin: 6px;
    }
`

var styleSheet = document.createElement("style")
styleSheet.innerText = styles
document.head.appendChild(styleSheet)

另一种选择是使用JQuery存储元素的内联样式属性,然后附加到它,然后用新值更新元素的样式属性。如下:

function appendCSSToElement(element, CssProperties)
        {
            var existingCSS = $(element).attr("style");

             if(existingCSS == undefined) existingCSS = "";

            $.each(CssProperties, function(key,value)
            {
                existingCSS += " " + key + ": " + value + ";";
            });

            $(element).attr("style", existingCSS);

            return $(element);
        }

然后用新的CSS属性作为对象执行它。

appendCSSToElement("#ElementID", { "color": "white", "background-color": "green", "font-weight": "bold" });

这可能不是最有效的方法(我愿意接受关于如何改进这一点的建议。:)),但它绝对有效。

我总是忘记如何添加一个类的HTML元素,这个SO出现在谷歌早期,但没有人添加这样做的现代方式,所以在这里。

要添加一个CSS样式,你可以选择元素并调用.classList.add(<className>)

例如: document.querySelector .classList.add(“#主要”)(“bg-primary”);

你可能还需要删除其他与你所添加的类冲突的类。 document.querySelector .classList.remove(“#主要”)(“bg-secondary”);

就是这样。运行示例,您将看到setInterval()方法每3秒添加&删除一次样式。

let useSecondary = false; setInterval(changeBgColor, 3000); function changeBgColor(){ if (useSecondary){ document.querySelector("#main").classList.remove("bg-primary"); document.querySelector("#main").classList.add("bg-secondary"); } else{ document.querySelector("#main").classList.remove("bg-secondary"); document.querySelector("#main").classList.add("bg-primary"); } useSecondary = !useSecondary; } * { transition: all 0.5s ease-in-out; } .bg-primary { background-color: green; } .bg-secondary{ background-color: yellow; } <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>JS Bin</title> </head> <body> <div > <div id="main" > Example text has background color changed every 3 seconds by adding / removing CSS styles. </div> </div> </body> </html>