在 Shadow DOM 中进行 Preact 但丢失了所有样式

发布于 2025-01-10 15:52:35 字数 896 浏览 1 评论 0原文

我正在构建一个小部件,因此希望在影子 DOM 中加载小部件 Preact 应用程序以避免 CSS 冲突。

我能够成功地做到这一点。

 const host = document.querySelector('#widget-_hw');
 const shadow = host?.attachShadow({ mode: 'open' });
 const renderIn = document.createElement('div');
 shadow?.appendChild(renderIn);
 render(h(App, { ...config, element: el }), renderIn)

但失去了所有的风格。

我在一个名为 main.css 的文件中拥有 Widget 所需的所有样式。我在哪里定义了这样的所有样式


reset {
  composes: scope;
  background: var(--color-bg);
  color: var(--color-text);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
    Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
  margin: 0;
}

.reset h1,
.reset h2,
.reset h3,
.reset h4,
.reset h5,
.reset h6 {
  line-height: var(--line-height);
}

//and many other like button, input fields, containers etc

有人可以建议我一种将样式元素导入回 preact 应用程序的方法吗?

I'm building a widget and hence wanted to load the widget Preact app in the shadow DOM to avoid CSS conflicts.

I am succesfully able to do so like this.

 const host = document.querySelector('#widget-_hw');
 const shadow = host?.attachShadow({ mode: 'open' });
 const renderIn = document.createElement('div');
 shadow?.appendChild(renderIn);
 render(h(App, { ...config, element: el }), renderIn)

But lost all styles.

I have all styles required for Widget inside a file called main.css. Where I have all styles defined like this


reset {
  composes: scope;
  background: var(--color-bg);
  color: var(--color-text);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
    Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
  margin: 0;
}

.reset h1,
.reset h2,
.reset h3,
.reset h4,
.reset h5,
.reset h6 {
  line-height: var(--line-height);
}

//and many other like button, input fields, containers etc

Could someone suggest me a way to import style elements back into the preact app?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

感情旳空白 2025-01-17 15:52:35

ShadowDOM 的重点是不通过全局/外部 CSS 进行样式化

ShadowDOM 的样式化如下:

The whole point of shadowDOM is to NOT be styled by global/outside CSS

ShadowDOM is styled by:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文