【问题标题】:Must I append style element to all ShadowDOM?我必须将样式元素附加到所有 ShadowDOM 吗?
【发布时间】:2018-04-18 16:25:24
【问题描述】:

外部 ShadowDOM 和内部 ShadowDOM 之间的 CSS 空间是分开的。

<style>
    .foo a.bar { text-decoration: none; color: skyblue; }
</style>
<div class="foo">
    <a id="a1" class="bar">baz</a>
    <custom-element>
        (shadow)
            <a id="a2" class="bar">baz</a>
        (/shadow)
    </custom-element>
    <custom-element>
        (shadow)
            <a id="a3" class="bar">baz</a>
        (/shadow)
    </custom-element>
</div>

在上面的代码中,#a1 是应用样式,但 #a2#a3 不是。 所以,我总是为每个 ShadowDOM 附加样式元素。 样式元素的内容是一样的。

我认为元素多的时候对性能不好。 如果可能,我想通过一个元素设置 CustomElement 的默认样式。

【问题讨论】:

    标签: javascript shadow-dom


    【解决方案1】:

    外部 ShadowDOM 和内部 ShadowDOM 之间的 CSS 空间是分开的。

    是的!这是 Shadow DOM 的主要和有趣的功能之一。

    所以,我总是为每个 ShadowDOM 附加样式元素。样式元素的内容是一样的。 我认为元素多的时候性能不好。

    您可能只是从 1000 种自定义元素中正确(并且取决于 CPU 容量)。

    如果您需要应用数千次相同的样式,也许您应该考虑使用没有 Shadow DOM 的自定义元素。

    关于同一主题,请查看此other SO question

    【讨论】:

    【解决方案2】:

    试试下面的代码:

    <style>
        .foo a.bar { text-decoration: none; color: skyblue; }
    </style>
    <div class="foo">
        <a id="a1" class="bar">baz</a>
        <custom-element>
            (shadow)
     <link rel='stylesheet' href='youCsspath.css' >
                <a id="a2" class="bar">baz</a>
            (/shadow)
        </custom-element>
        <custom-element>
            (shadow)
               <link rel='stylesheet' href='youCsspath.css' >
                <a id="a3" class="bar">baz</a>
            (/shadow)
        </custom-element>
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-19
      • 2023-04-06
      • 1970-01-01
      • 2010-12-29
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多