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


当前回答

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

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

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

其他回答

在Jquery中使用。css,例如$('strong').css('background','red');

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

您可以逐个元素添加类或样式属性。

例如:

<a name="myelement" onclick="this.style.color='#FF0';">text</a>

你可以这样做。背景,this.style。字体大小等。你也可以使用同样的方法应用一个样式

this.className='classname';

如果你想在javascript函数中做到这一点,你可以使用getElementByID而不是'this'。

这是Chris Herring的解决方案的一个稍微更新的版本,考虑到你也可以使用innerHTML,而不是创建一个新的文本节点:

function insertCss( code ) {
    var style = document.createElement('style');
    style.type = 'text/css';

    if (style.styleSheet) {
        // IE
        style.styleSheet.cssText = code;
    } else {
        // Other browsers
        style.innerHTML = code;
    }

    document.getElementsByTagName("head")[0].appendChild( style );
}

这是我在最后一个样式表列表的末尾添加css规则的解决方案:

var css = new function()
{
    function addStyleSheet()
    {
        let head = document.head;
        let style = document.createElement("style");

        head.appendChild(style);
    }

    this.insert = function(rule)
    {
        if(document.styleSheets.length == 0) { addStyleSheet(); }

        let sheet = document.styleSheets[document.styleSheets.length - 1];
        let rules = sheet.rules;

        sheet.insertRule(rule, rules.length);
    }
}

css.insert("body { background-color: red }");

下面是我的通用函数,它参数化了CSS选择器和规则,如果你想添加到特定的表中,它还可以选择一个CSS文件名(区分大小写)(否则,如果你不提供CSS文件名,它将创建一个新的样式元素并将其附加到现有的头部)。它最多创建一个新的样式元素,并在以后的函数调用中重用它)。适用于FF, Chrome和IE9+(可能更早,未经测试)。

function addCssRules(selector, rules, /*Optional*/ sheetName) {
    // We want the last sheet so that rules are not overridden.
    var styleSheet = document.styleSheets[document.styleSheets.length - 1];
    if (sheetName) {
        for (var i in document.styleSheets) {
            if (document.styleSheets[i].href && document.styleSheets[i].href.indexOf(sheetName) > -1) {
                styleSheet = document.styleSheets[i];
                break;
            }
        }
    }
    if (typeof styleSheet === 'undefined' || styleSheet === null) {
        var styleElement = document.createElement("style");
        styleElement.type = "text/css";
        document.head.appendChild(styleElement);
        styleSheet = styleElement.sheet;
    }

    if (styleSheet) {
        if (styleSheet.insertRule)
            styleSheet.insertRule(selector + ' {' + rules + '}', styleSheet.cssRules.length);
        else if (styleSheet.addRule)
            styleSheet.addRule(selector, rules);
    }
}