您可以使用以下功能:
function setStyle(cssText) {
var sheet = document.createElement('style');
sheet.type = 'text/css';
/* Optional */ window.customSheet = sheet;
(document.head || document.getElementsByTagName('head')[0]).appendChild(sheet);
return (setStyle = function(cssText, node) {
if(!node || node.parentNode !== sheet)
return sheet.appendChild(document.createTextNode(cssText));
node.nodeValue = cssText;
return node;
})(cssText);
};
特点:
- 该函数是用 vanilla-js 编写的,因此它比 jQuery 替代品具有更好的性能
- 第一次调用 后会创建一个样式表
setStyle
,因此如果您不调用它,它将不会创建任何样式表。
- 相同的样式表被重用于以下调用
setStyle
- 该函数返回对与您添加的一堆 CSS 关联的节点的引用。如果您使用该节点作为第二个参数再次调用该函数,它将用新的 CSS 替换旧的 CSS。
例子
var myCSS = setStyle('*{ color:red; }');
setStyle('*{ color:blue; }', myCSS); // Replaces the previous CSS with this one
浏览器支持
至少,它适用于 IE9、FF3、Chrome 1、Safari 4、Opera 10.5。
还有一个IE 版本,可以在现代浏览器和旧版本的 IE 上运行!(适用于 IE8 和 IE7,但可能导致 IE6 崩溃)。