如何将常见的CSS样式同时应用于多个Shadow Roots?

tom*_*lec 4 html javascript css web-component shadow-dom

考虑一下,我使用Shadow DOM隐藏其内部div-soup和布局的元素很少.

即使是艰难的,它们也是不同的,它们共享相同的CSS样式表,因为它们使用的是相同的元素集,这些元素应该以一致的方式进行样式化.例如,这可以是CSS框架(引导程序).

问题是这个样式表非常大.

在许多Shadow Roots(在SD V1中)之间分享如此大样式表的最有效方法是什么?

Sup*_*arp 6

更新:2019年 - 使用可构造的样式表

从2019年开始,Constructable样式表是将样式表应用于影子DOM和Web组件的方法.在这里阅读更多相关信息.

上一个答案:

您可以在Shadow DOM中定义import<style>元素的第一行使用CSS规则:

<div id=D1></div>
<template id=T1>
   <style>
      @import url( '/css/stylesheet.css' )
   </style>
   ...
</template>
Run Code Online (Sandbox Code Playgroud)

然后导入<template> contentShadow DOM根目录:

var root = D1.attachShadow( {mode: open } )
root.appendChild( T1.content.cloneNode( true ) )
Run Code Online (Sandbox Code Playgroud)

  • 当我们在`<head>`中包含全局样式的`<style>`元素时怎么样?它不可能`@ import`它因为它不在任何地方,它只是一个文字元素.在那种情况下你会怎么做? (2认同)
  • @LonnieBest现在,您还可以在Shadow DOM中使用&lt;link rel =“ stylesheet”&gt;。 (2认同)