html - 将 React 组件添加到现有网页并避免 CSS 冲突
问题描述
我正在开发一个将嵌入现有网站的 React/MaterialUI 组件。
为了最大限度地减少现有页面上嵌入我的组件所需的工作,我将我的组件捆绑到 app.js 中,对现有页面请求的唯一更改是:
<div id="embedded-component"></div>
<script type="text/javascript" src="https://example.com/app.js"></script>
我的组件通过 ID 找到 div,然后安装在该元素上。
事情大部分都在工作,但我遇到了原始页面上的 CSS 文件(我无法修改)和我的应用程序元素之间的 CSS 冲突问题。
例如,原始页面使用带有边框/填充/颜色的文本输入元素,我不希望我的组件“继承”。 无论嵌入哪个页面,我都希望我的组件以相同的方式显示。
在这种情况下是否有任何策略/工具可以使用,因此现有页面上的 CSS 类不会影响我的嵌入式组件的元素?
试图找到解决方案我遇到了 Shadow DOM(例如https://medium.com/rate-engineering/winning-the-war-of-css-conflicts-through-the-shadow-dom-de6c797b5cba ) 但我不确定这在不同的浏览器中得到了多么广泛的支持。
是否有任何解决方案,所有主要浏览器都广泛支持?
我不能使用 iframe 并且可以完全控制我的 js/css 文件,但无法控制除了“安装”div 之外的现有页面。
解决方案
推荐阅读
- ios - 跨不同模拟器打印视图的 bounds.width 属性时的常量值 od 375
- selenium - 使用 PageFactory [Selenium] 指定超时
- laravel - 调用未定义的方法 stdClass::links()
- facebook - 通过 Facebook Messenger 分享链接 - react-native android
- html - 如何将网站部署到 Apache 服务器?
- sql-server - 如何将代码优先迁移应用到 Azure 中的数据库?
- javascript - JavaScript for 循环在调用 AJAX 调用时返回“干净”
- c# - Convert.ToInt32(nullableVariable) VS nullableVariable.GetValueOrDefault()
- ios - 如何在 swift 中获得 tableviewcell 中的圆形 UIbutton?
- javascript - HTML & JavaScript - 函数内部的函数不起作用