我正在寻找一种方法,将一个<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呢?
这个对象变量将把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();
如果您面临的问题是将一串CSS注入到页面中,那么使用<link>元素比<style>元素更容易做到这一点。
下面添加p {color:绿色;}规则到页面。
<link rel="stylesheet" type="text/css" href="data:text/css;charset=UTF-8,p%20%7B%20color%3A%20green%3B%20%7D" />
您可以在JavaScript中通过URL编码您的CSS字符串并将其添加到HREF属性来创建它。比<style>元素或直接访问样式表要简单得多。
let linkElement: HTMLLinkElement = this.document.createElement('link');
linkElement.setAttribute('rel', 'stylesheet');
linkElement.setAttribute('type', 'text/css');
linkElement.setAttribute('href', 'data:text/css;charset=UTF-8,' + encodeURIComponent(myStringOfstyles));
这将在IE 5.5以上工作