【发布时间】:2019-06-23 02:46:55
【问题描述】:
我正在尝试在 shadow dom 中使用 https://material-ui.com/ 组件,并且需要一种将这些样式注入到 shadow dom 中的方法。默认情况下material-ui,它在后台使用jss 在页面头部注入样式。
这可能吗?谁能举个例子?
【问题讨论】:
-
我不认为将 React 和整个 shebang 注入页面是一个好主意,在我看来当然不是这样。通常的方法是在你的扩展(在 web_accessible_resources 中列出)中只插入一个指向 html 文件的 iframe,这是一个标准页面,可以做任何想做的事情并在其中加载任何材料 UI 组件。我在网上至少看到过一个完整的示例/教程。
-
你想要一个组件的样式到它的影子 DOM 中还是你可以把所有的样式放到一个影子 DOM 中?
-
@wOxxOm 我完全同意,但是 iframe 方法在我的经验中有点棘手,因为焦点(当您在 iframe 内单击时就像在另一个页面中一样)和调整 iframe 的大小(例如,当我在 iframe 中放置一个下拉列表时,我遇到了问题,我需要告诉外部页面调整 iframe 的大小,以便内容可见)。 Web 组件肯定会更加原生。 “epsilon”我想做的是使用很少的 material-ui 小部件制作一个 Web 组件,并且它们的样式应该注入到 shadow root 中。
-
即使您能够归档您的目标,您也可能会遇到从影子根内部显示弹出材质组件的问题。因为似乎材料库将弹出窗口 dom 元素直接插入到 html 页面正文中,在您的情况下这将是无样式的。
标签: google-chrome-extension material-ui jss