【发布时间】:2015-09-14 15:55:23
【问题描述】:
shadow host 的后代不得在 格式化树。相反,active shadow tree 的内容 生成框,就好像它们是元素的内容一样。
CSS Pseudo-Elements 将::before 和::after 描述为
这些伪元素生成盒子,就好像它们是直接的一样 原始元素的子元素
那么下面哪一个是真的?
- 首先,将影子主机的所有内容(不包括
::before和::after)替换为活动影子树的内容。然后,::before和::after在影子主机中生成盒子。 - 首先,
::before和::after在影子主机中生成盒子。然后,影子主机的所有内容(包括::before和::after)都被活动影子树的内容替换。
Firefox 和 Chrome 是前者,但规范是否描述了这种行为?
var root = document.querySelector('div').createShadowRoot();
root.innerHTML = "<p>Shadow content</p>";
div::before, div::after {
content: 'Generated content';
}
<div>Content</div>
【问题讨论】:
-
你看过Shadow DOM的分布算法了吗?如果可以将伪
::before和::after元素视为影子主机的子节点,那么这可能会描述行为。 w3.org/TR/shadow-dom/#distribution-algorithms -
@DavidDomain 不多,我觉得那个规范很难理解 :S 但是,那个规范似乎在谈论 DOM 中发生的事情,但
::before和::after不是 DOM 节点。 -
同样,我也很难遵循规范。我只是想也许 Shadow DOM 被设计成将伪元素视为子节点,但事实可能并非如此,也没有多大意义。
标签: css language-lawyer pseudo-element shadow-dom