在模板标签内使用远程样式表(带 shadow dom)

新手上路,请多包涵

我正在尝试制作一个半可重复使用的小部件,但遇到了问题。我试图将一些 CSS 代码封装在影子根中,这样它就不会影响网页的其余部分,但是这个 CSS 用于多个小部件,所以我试图包含一个远程样式表。我发现的所有示例都没有使用远程样式表,我想知道这是否可能。

前任:

 <template id="templateContent">
    <head>
        <link rel="stylesheet" href="css/generalStyle1.css">
    </head>
    <body>
        <div class="affectedByGeneralStyle1"></div>
    </body>
</template>

包含模板的脚本:

 <div id="host"></div>
<script>
    var importedData = (html_import_element).import.getElementById("templateContent");
    var shadow = document.querySelector('#host').createShadowRoot();
    var clone = document.importNode(importedData.content, true);
    shadow.appendChild(clone);
</script>

原文由 dtracers 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 448
2 个回答

我最近遇到了同样的问题。我最终做的是使用:

 <template id="templateContent">
     <style> @import "css/generalStyle.css"; </style>
</template>

附加信息:这工作得很好,除了现在我遇到了一些缓存问题,因为 Chrome 在硬重新加载后似乎没有重新加载这些资源。

原文由 blackBox solutions 发布,翻译遵循 CC BY-SA 4.0 许可协议

让我们添加到答案中。现在 shadow dom 支持直接标记。

你可以直接使用

<link rel="stylesheet" href="yourcss1.css">
<link href="yourcss2.css" rel="stylesheet" type="text/css">

检查它们是否已由 whatwg 和 W3C 更新

在 shadow dom 中使用 css 的有用链接。

https://w3c.github.io/webcomponents/spec/shadow/#inertness-of-html-elements-in-a-shadow-tree https://github.com/whatwg/html/commit/43c57866c2bbc20dc0deb15a721a28cbaad2140c

https://github.com/w3c/webcomponents/issues/628

可以在 shadow dom 中使用直接 css 链接

谢谢。

原文由 Himanshu sharma 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题