Ben*_*ank 196
简单直接的方法是创建并向style
文档添加新节点.
// 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.type = "text/css"
styleSheet.innerText = styles
document.head.appendChild(styleSheet)
Run Code Online (Sandbox Code Playgroud)
bob*_*nce 101
您也可以使用DOM Level 2 CSS接口(MDN)执行此操作:
var sheet = window.document.styleSheets[0];
sheet.insertRule('strong { color: red; }', sheet.cssRules.length);
Run Code Online (Sandbox Code Playgroud)
...除了(自然)IE之外的所有IE,它使用自己的略微不同的措辞:
sheet.addRule('strong', 'color: red;', -1);
Run Code Online (Sandbox Code Playgroud)
与createElement-set-innerHTML方法相比,这有一个理论上的优势,因为你不必担心在innerHTML中放入特殊的HTML字符,但在实践中,样式元素是遗留HTML中的CDATA,而'<'而且'''很少用在样式表中.
您需要一个样式表,然后才能开始像这样添加样式表.这可以是任何现有的活动样式表:外部,嵌入或空,无关紧要.如果没有,那么目前创建它的唯一标准方法是使用createElement.
Chr*_*ing 26
Ben Blank的解决方案对我来说不适用于IE8.
但是这在IE8中确实有效
function addCss(cssCode) {
var styleElement = document.createElement("style");
styleElement.type = "text/css";
if (styleElement.styleSheet) {
styleElement.styleSheet.cssText = cssCode;
} else {
styleElement.appendChild(document.createTextNode(cssCode));
}
document.getElementsByTagName("head")[0].appendChild(styleElement);
}
Run Code Online (Sandbox Code Playgroud)
Hus*_*sky 24
这是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 );
}
Run Code Online (Sandbox Code Playgroud)
chi*_*ens 16
最短的一个班轮
// One liner function:
const addCSS = s => document.head.appendChild(document.createElement("style")).innerHTML=s;
// Usage:
addCSS("body{ background:red; }")
Run Code Online (Sandbox Code Playgroud)
在现代浏览器(caniuse)中,您可以使用document.adoptedStyleSheets
添加CSS。
const sheet = new CSSStyleSheet();
sheet.replaceSync("strong { color: red; }");
document.adoptedStyleSheets.push(sheet);
Run Code Online (Sandbox Code Playgroud)
这种方法的一个优点是您不必等待<head>
元素变得可用,这可能是很早运行的浏览器扩展代码中的一个问题。
小智 5
您可以逐个元素地添加类或样式属性。
例如:
<a name="myelement" onclick="this.style.color='#FF0';">text</a>
Run Code Online (Sandbox Code Playgroud)
你可以在哪里做 this.style.background、this.style.font-size 等。你也可以使用同样的方法来应用样式 ala
this.className='classname';
Run Code Online (Sandbox Code Playgroud)
如果您想在 javascript 函数中执行此操作,您可以使用 getElementByID 而不是 'this'。
归档时间: |
|
查看次数: |
188772 次 |
最近记录: |