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


当前回答

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

// 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中使用。css,例如$('strong').css('background','red');

$(“强”). css(“背景”、“红色”); < script src = " https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js " > < /脚本> < >强的例子 < / >强

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

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

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

这个简单的例子在html头部添加<style>

var sheet = document.createElement('style');
sheet.innerHTML = "table th{padding-bottom: 0 !important;padding-top: 0 !important;}\n"
+ "table ul {    margin-top: 0 !important;    margin-bottom: 0 !important;}\n"
+ "table td{padding-bottom: 0 !important;padding-top: 0 !important;}\n"
+ ".messages.error{display:none !important;}\n"
+ ".messages.status{display:none !important;} ";

document.body.appendChild(sheet); // append in body
document.head.appendChild(sheet); // append in head

动态样式——用JavaScript操作CSS

另一种选择是使用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>