子应用之间样式隔离:
Dynamic Stylesheet 动态样式表,当应用切换时移除老应用样式,添加新应用样式;
主应用和子应用之间的样式隔离:
-
BEM(Block Element Modifier) 约定项目前缀;
-
CSS-Modules 打包时生成不冲突的选择器名;
-
Shadow DOM 真正意义上的隔离;
-
css-in-js;
Shadow DOM
-
图解
-
示例代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> p { color: green; } </style> </head> <body> <p>hello world</p> <div id="shadow"></div> <script> // open:可以使用 document.querySelector('#shadow').shadowRoot 获取根节点 // closed:document.querySelector('#shadow').shadowRoot 为 null let shadowDom = shadow.attachShadow({ mode: 'open' }); // 外面的样式并不能影响 Shadow DOM 内的样式 let pElement = document.createElement('p'); pElement.innerHTML = 'hello world'; let styleElement = document.createElement('style'); styleElement.textContent = `p{color:red}`; shadowDom.appendChild(pElement); shadowDom.appendChild(styleElement) </script> </body> </html>
-
效果展示
qiankun 实战
上一篇