【发布时间】:2014-10-02 09:11:14
【问题描述】:
我正在听这一集 JavaScript Jabber:
http://javascriptjabber.com/120-jsj-google-polymer-with-rob-dodson-and-eric-bidelman/
Rob 曾说过:
每个人都有第一个倾向,因为它很有意义。你会说,“Bootstrap 是组件。我只是要把它们做成标签。”但是随后您会遇到这样一个事实,即 Bootstrap 样式表只是一个大而长的样式表,它是在假设它可以触及文档的每个部分的情况下编写的。当你突然对标记的部分进行范围界定时,对它进行范围界定以使 CSS 无法到达它,CSS 实际上必须与它一起在 Shadow DOM 中,你必须从头开始编写该元素,那就是我认为人们一开始会感到非常困惑和沮丧。
这让我想知道,您将如何使用 Web 组件解决这个问题? Shadow DOM 模板有没有办法继承通用样式,或者您是否必须为每个单独的组件重复共享 CSS?还是别的什么?
【问题讨论】:
-
这个问题不是“太宽泛” - 它有一个非常简洁的答案(无论如何在真正的 Shadow DOM 实现中)。
-
我已经发布了不同的方法来解决问题,请参阅最后一个答案。
-
Shadow DOM 创建新的 dom 树。所以它提供了封装。您可以访问 :host 和/或 :host-context(
) 和 ::shadow ,这样您就可以有一个可以访问影子 DOM 元素的全局主题的概念,就像您可以在 今天。此外,Web 组件规范的其他部分(如模板和 html 导入)将提供更简洁、更可共享的组件。
标签: javascript html css twitter-bootstrap web-component