【发布时间】:2021-11-05 22:17:07
【问题描述】:
我使用 web 组件定义了一个自定义元素:
<universal-form>
<slot name="inner-input">
</universal-form>
这个自定义元素本身被放置在另一个 shadow dom 中:
<my-dashboard>
#shadow-root
<div id="shadow-container">
<universal-form>
...
<input type="datepicker" id="to-be-exposed" slot="inner-input"/>
</universal-form>
</div>
...
</my-dashboard>
** 注意:有些人可能会建议将<universal-form> 放在<my-dashboard> 的slot 中,而不是直接放在<my-dashboard> shadow-root 中,这条路线被排除在外,因为其他一些实现要求。
现在我希望能够从网页的 css 文件中设置 input#to-be-exposed 的样式,因此当文档准备就绪时,需要从 light dom 访问它。
实现这一目标的最佳做法是什么?
【问题讨论】:
-
只有
<style>inside<universal-form>shadowRoot。如何以及何时创建它取决于您.. 或使用 CSS 属性、CSS ShadowParts 或 Constructable StyleSheets(目前仅在 Chromium 中支持)这里没有最佳实践;这完全取决于您想要什么/为什么/何时/如何。 -
+1 特别是使用 Shadow Parts,如果您只想完全访问阴影根内的内部节点样式,那么仅使用 CSS 比尝试在 JS 中移动节点更容易
标签: web-component shadow-dom custom-element