Web组件和Shadow DOM如何防止组件之间的CSS泄漏?

时间:2019-05-09 12:15:40

标签: javascript css web-component shadow-dom

2008年,我们的团队研究了GWT-一种可以用Java编写Java脚本Web组件的技术。

团队的一位新成员说:

  

该组件的CSS和页面相互冲突时将出现问题。

事实证明他是正确的。

我今天正在和一位朋友谈论Web Components。我问他如何停止页面的CSS和组件之间的冲突。

他说:

  

有了Web组件和Shadow DOM,一切都在控制之下。它解决了CSS泄漏的问题。

我的问题是: Web组件和Shadow DOM如何防止跨组件泄漏CSS?

1 个答案:

答案 0 :(得分:1)

因为Shadow DOM的设计是 精确 ,以解决开发Web组件时遇到的问题,如Google在introduction to Shadow DOM中所述:

  

隔离的DOM:组件的DOM是独立的(例如document.querySelector()不会返回组件的影子DOM中的节点)。

     

作用域CSS:在影子DOM中定义的CSS作用域。样式规则不会泄漏,页面样式也不会渗入。

     

简化CSS-作用域DOM意味着您可以使用简单的CSS选择器,更通用的ID /类名,而不必担心命名冲突。

这是通过CSS范围界定实现的,方法是引入一个新的单独的DOM树,称为 Shadow DOM ,该树将在本地替换称为 Light DOM 的初始DOM。