我最近听说过Shadow DOM。在观看关于Angular 2发布的视频时,主持人反复提到Shadow DOM而没有明确的表达。 暗影DOM 真正意味着什么?
答案 0 :(得分:3)
我发现的最佳解释来自What the Heck is Shadow DOM?,如下所示:
Shadow DOM是指浏览器包含子树的能力 DOM元素进入文档的渲染,但不进入 主文档DOM树。
一个重要的用例是网页上的视频控件。标记仅显示视频标记,包含一些属性和源标记。所有视频操作的附加代码都隐藏在Shadow DOM中,不可用于页面的其余部分。标记的实际标记,javascript和样式被封装,隐藏了每个浏览器供应商已经编写的视频控件的实现细节。
因此,虽然它存在于DOM中,但它隐藏在呈现它的页面之外。因此,要查看Shadow DOM,您可以在Chrome中的Dev Tools下启用它。
简短的回答是,Shadow DOM是构成Web组件的四种技术之一。
对于定义,Web组件是:W3C的组件平台,允许从标准化构建块构建Web站点。 Web组件包括自定义元素,Shadow DOM和HTML导入和模板。
Shadow DOM是一种Web组件技术(尽管每种都可以单独使用):
答案 1 :(得分:1)
它指的是创造一个孩子的能力" DOM从页面的其余部分完全沙箱化。适用于Web组件,可重复使用的小部件"这让他们不必担心他们的css / js会影响他们不应该做的事情。 http://glazkov.com/2011/01/14/what-the-heck-is-shadow-dom/
如果您想查看它,请查看https://www.polymer-project.org/。
答案 2 :(得分:0)
将shadow DOM视为封装(私有)DOM。 您无法以访问常规DOM的方式访问shadow DOM,例如'document.querySelector()'。
假设您定义了一个可重用的自定义元素(包含其DOM树)。然后在应用HTML中使用自定义元素。
现在,DOM(现在称为“主机元素”)已成为阴影DOM子树(在阴影根下),隐藏在父结构中!
我希望这对你有所帮助。