【问题标题】:Inheritance inside a shadow DOM slot影子 DOM 插槽内的继承
【发布时间】:2017-06-15 09:51:29
【问题描述】:

这里的规范 - https://drafts.csswg.org/css-scoping/#slots-in-shadow-tree 有如下注释。

注意:将元素分配给槽的一个不明显的结果是它们继承了它们被分配到的槽。它们原来的轻树父级,以及它们的槽被分配到的任何更深的槽,都不会影响继承。

所以我认为一旦一个元素被插入,应用于该元素并且可以像colorbackground-color 那样被继承的样式不会从它的轻量级 DOM 父级继承。

但是,在下面的示例中,确实如此。

这是我的代码。

class CustomTitle extends HTMLElement {
  constructor() {
    super();
    this.attachShadow({ mode: "open" });
    this.shadowRoot.innerHTML = "<slot name='title'></slot>";
  }
}
window.customElements.define("custom-title", CustomTitle);
custom-title {
  border: 2px solid;
  display: block;
  color: red;
}
<custom-title>
  <h1 slot='title'>Hi There!</h1>  
</custom-title>

我的期望是h1 仍然是黑色的,但它显示为红色。显然我不是规范的意思,或者我正在做一些愚蠢的事情。

谁能给我解释一下?

【问题讨论】:

    标签: css inheritance web-component shadow-dom custom-element


    【解决方案1】:

    抱歉,该注释意味着该元素直接从它的第一个槽继承。从更高的插槽、其他阴影元素、承载阴影树的轻元素等继承仍将正常工作

    这个例子并没有展示继承。 h1 有一个颜色分配给它,所以它只会使用它,而不是使用继承。

    【讨论】:

    • 是的。我的例子不好。我会在上面的问题中解决这个问题,以免造成混淆。
    • 如何演示这种情况? and any deeper slots that their slot gets assigned to。这可能超出了问题的范围,但是如果有时间,请您指点我可以找到示例的地方吗?
    • 我仍然对directly from it's first slot 的内容感到有些困惑。另外,我尝试通过将样式应用于阴影树内的slot 来设置文本节点的样式,但那里没有继承。 codepen.io/praveenpuglia/pen/jwMmWd
    猜你喜欢
    • 1970-01-01
    • 2021-08-23
    • 2018-02-25
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    相关资源
    最近更新 更多