SVG使用元素href引用shadowRoot之外的元素吗?

时间:2020-06-04 14:04:01

标签: html svg shadow-dom

是否有办法让shadowRoot内部的SVGUseElement引用周围html文档中shadowRoot的外部片段?

例如


<ele>
    shadow
        <svg...
            <use href="#frag"...
</ele>
<svg>     
    <rect id="frag"...
</svg>


shadowDom和SVGUseElement的href之间的交互是(替代)特定位置吗?

1 个答案:

答案 0 :(得分:0)

我一直在寻找完全一样的东西。
问题是,在<use href="#frag"引用同一文档中的元素的情况下,Shadow DOM基本上是文档中的另一个文档,例如iframe(据我所知),因此元素{ {1}}不存在。

我正在使用LitElement,我想出的解决方案是将主#frag放在<svg>内,并使用JavaScript手动将其附加到影子根目录:
(我也尝试过使用<ele>,但它们也在影子DOM之外)

<slot>

然后在JavaScript中使用firstUpdated

<ele>
  <svg>     
    <rect id="frag"/>
  </svg>
<ele>

使用LitElement,您也可以Specify the render root,这将意味着永远不会创建卷影根(文档中的文档),并且也应该解决该问题。

希望对您有用! :-D