首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当渲染根是光的时候,点燃的样式

当渲染根是光的时候,点燃的样式
EN

Stack Overflow用户
提问于 2021-11-07 19:58:14
回答 1查看 374关注 0票数 0

所以我有下面的styles

代码语言:javascript
复制
  static styles = [css, icons];

然后,我将renderRoot设置为lightdom:

代码语言:javascript
复制
protected createRenderRoot(): Element | ShadowRoot {
    return this;
}

这样,样式就不适用了,我必须手动添加:

代码语言:javascript
复制
render() {
  return html`
 <style>
       ${css.cssText}
       ${icons.cssText}
 </style>

如果我移除createRenderRoot,样式在不设置render函数中的<style>标记的情况下工作。

有人能告诉我我做错了什么吗?或者为什么会发生这种事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-08 09:00:21

lit的createRenderRoot的默认行为是创建阴影根,并将静态styles属性中设置的样式添加到所述阴影根。

因此,当您重写createRenderRoot以使用this作为根(因此,根本不使用影子DOM )时,您也将删除添加样式的代码。

造成这种情况的主要原因是,只有在阴影DOM中才能限定样式的作用域。将它们添加到不使用影子DOM的自定义元素中,还将使这些样式应用于与所使用的CSS选择器匹配的任何其他节点。

这基本上给您留下了两个选项:

  1. 只使用轻型DOM,并将样式移动到CSS文件中的全局样式表。

更多信息:https://lit.dev/docs/components/shadow-dom/#implementing-createrenderroot

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69876073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档