首页 > 解决方案 > 为什么 DOM 规范不能识别扁平树?

问题描述

概括地说,DOM规范定义了阴影树的概念如下:

我觉得这张照片有点牵强。看起来我们实际上没有两棵不同的树(光和影),而是三棵树。实际上,用户代理会渲染另一个名为flattened tree的用户代理。在这棵树中,影子根是其宿主的子节点,而插槽是其插槽表的祖先:

在此处输入图像描述

有人可能会争辩说扁平树只是一种“虚拟想法”。但是,它用于 CSS 和事件侦听,并且可能这一事实证明了它的有用性。

松散地,阴影树被视为阴影主机的内容,而不是其正常的灯光树内容。但是,它的一些光照树子节点可以通过将它们分配给插槽来“拉入”阴影树。出于 CSS 目的,这会导致它们被视为插槽的子项。(CSS非规范解释

当物质状态可以用单个扁平树来描述时,是否有任何理由引入影子树的概念,特别是槽分配节点,其中节点与众所周知的后代/祖先引用连接,而不是具有名为“已分配”的特殊引用节点”?当然,如果我们渴望封装,API 函数之类findElementById()的将保持扁平树的“影子”子树完好无损。

标签: htmlshadow-dom

解决方案


推荐阅读