我正在寻找一种方法,将一个<style>标签插入到一个HTML页面与JavaScript。
目前为止我发现的最好的方法是:
var divNode = document.createElement("div");
divNode.innerHTML = "<br><style>h1 { background: red; }</style>";
document.body.appendChild(divNode);
这适用于Firefox, Opera和Internet Explorer,但不适用于谷歌Chrome。而且,对于IE来说,前面的<br>有点难看。
有人知道如何创建<style>标签吗
是更好的
工作与Chrome?
或者
这是我应该避免的不规范的事情
三个可用的浏览器都很棒,谁会用Chrome呢?
你写的:
var divNode = document.createElement("div");
divNode.innerHTML = "<br><style>h1 { background: red; }</style>";
document.body.appendChild(divNode);
为什么不是这个?
var styleNode = document.createElement("style");
document.head.appendChild(styleNode);
从此以后,你可以很容易地将CSS规则添加到HTML代码中:
styleNode.innerHTML = "h1 { background: red; }\n";
styleNode.innerHTML += "h2 { background: green; }\n";
...或者直接到DOM:
styleNode.sheet.insertRule("h1 { background: red; }");
styleNode.sheet.insertRule("h2 { background: green; }");
我希望这在任何地方都能工作,除了老式浏览器。
2019年肯定能在Chrome上运行。
这个对象变量将把style标签附加到带有type属性的head标签上,其中有一个简单的转换规则,匹配每个id/class/元素。您可以随意修改内容属性,并根据需要注入尽可能多的规则。只要确保内容中的css规则保持在一行(或“转义”每个新行,如果你喜欢这样)。
var script = {
type: 'text/css', style: document.createElement('style'),
content: "* { transition: all 220ms cubic-bezier(0.390, 0.575, 0.565, 1.000); }",
append: function() {
this.style.type = this.type;
this.style.appendChild(document.createTextNode(this.content));
document.head.appendChild(this.style);
}}; script.append();