如何使用Javascript添加CSS规则(如强{颜色:红色})?
当前回答
最短一行 //一个函数: const addCSS =css => document.head.appendChild(document.createElement("style")).innerHTML=css; / /使用方法: addCSS(“身体{背景:红色;}”)
其他回答
这是我在最后一个样式表列表的末尾添加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 }");
在现代浏览器中,您可以使用document。adoptedStyleSheets添加CSS。
const sheet = new CSSStyleSheet();
sheet.replace("strong { color: red; }");
document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];
这种方法的一个优点是,您甚至不需要等待<head>元素可用,这可能是早期运行的浏览器扩展代码所关注的问题。
如果你知道页面中至少存在一个<style>标签,使用这个函数:
CSS=function(i){document.getElementsByTagName('style')[0].innerHTML+=i};
用法:
CSS("div{background:#00F}");
下面是一个示例模板来帮助您入门
不需要任何库,只使用javascript注入HTML和CSS。
这个函数是从上面的@Husky用户那里借来的
如果你想运行一个tampermonkey脚本,并想在网站上添加一个切换覆盖(例如,一个笔记应用程序),这很有用。
// INJECTING THE HTML document.querySelector('body').innerHTML += '<div id="injection">Hello World</div>'; // CSS INJECTION FUNCTION //https://stackoverflow.com/questions/707565/how-do-you-add-css-with-javascript 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 ); } // INJECT THE CSS INTO FUNCTION // Write the css as you normally would... but treat it as strings and concatenate for multilines insertCss( "#injection {color :red; font-size: 30px;}" + "body {background-color: lightblue;}" )
简单而直接的方法是在文档中创建并添加一个新的样式节点。
// 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)