【发布时间】:2022-01-12 18:22:15
【问题描述】:
有一个 lit 元素 container-element 具有嵌套的 lit 元素 gmail-item。
如何将样式应用于嵌套元素,以使最后一个 gmail-item 具有 border-none?
目前,li:last-of-type 的样式不会传播到包含 li 的嵌套发光元素。
@container-element
li:last-of-type {
border-bottom: none;
}
<gmail-item></gmail-item>
<gmail-item></gmail-item>
<gmail-item></gmail-item>
<gmail-item></gmail-item>
<gmail-item></gmail-item>
@gmail-item
li {
border-bottom: 1px solid black;
}
<li>I am gmail item</li>
编辑:
尝试了以下方法。
<style>
gmail-item::slotted(li) {
border: 1px solid orange;
}
gmail-item li {
border: 1px solid orange;
}
li {
border: 1px solid orange;
}
</style>
<gmail-item></gmail-item>
........
但不幸的是,它们都没有将样式应用于gmail-item 内部的li。
我也尝试添加createRendeRoot,但这删除了gmail-item 中的所有样式。
@gmail-item
createRenderRoot() {
return this;
}
还尝试设置li border-bottom to inherit。
【问题讨论】:
-
@Danny'365CSI'Engelman 我已经尝试了提供的解决方案,但不幸的是,
li元素没有应用任何样式。 -
CSS 被封装在 Web 组件中,这意味着您的内部元素不会“看到”任何外部 CSS,并且您在 shadow DOM 中的 CSS 不会影响组件外部的任何内容。 没有任何东西流出,没有任何东西渗入(继承的属性除外,例如自定义属性又名“CSS 变量”)。
标签: html web-component lit-element lit-html lit