【发布时间】:2020-01-08 03:44:12
【问题描述】:
我正在尝试在 svelte 3 中创建 custom-element(Web 组件)。我找不到任何方法来设置 CSS 中嵌套组件的样式。 Svelte 在将样式注入到 ShadowDOM 内部的 <style> 之前会移除样式。
问题是我想在我的根元素中有嵌套组件。 例如:
- RootComponent(细长的自定义元素)
- (导入)FooComponent
- (导入)BarComponent
如此处所述:svelte-custom-element
导入到自定义元素的所有组件都必须将编译器选项设置为<svelte:options tag="component-name" />。
使用此选项设置嵌套组件按预期工作并注入到根的元素 ShadowDOM。问题是嵌套组件中定义的styles 没有被注入。
此问题的解决方法是将它们作为 ShadowDom 中的全局样式注入到根元素 <style> 中。
(Un) 幸运的是,当自定义元素尚不存在时,svelte 会在编译期间自动删除所有未使用的样式。
我的目标是使用 svelte 创建 Web 组件,然后在 svelte 之外将其用作本机 Web 组件。
这里是REPL
Conduitry 写道:
REPL 中的编译器选项实际上不会影响运行的代码,只会影响显示的代码。因此启用 customElement >并不意味着您正在构建和运行 Web 组件
所以它更像是一个代码示例而不是一个工作示例。
- 我想知道是否有另一种方法可以创建具有嵌套组件和适当样式的细长自定义元素。
- 有没有办法禁止删除未使用的 css?
from <div class="nested"> 启动从 Nested.svelte 导入的嵌套组件。
<style> 元素应该有 .nested 类注入,但它被 svelte 编译器删除。
【问题讨论】:
标签: web-component shadow-dom custom-element svelte svelte-component