带你读《现代Javascript高级教程》二十二、JS Shadow DOM:创建封装的组件和样式隔离(2)

简介: 带你读《现代Javascript高级教程》二十二、JS Shadow DOM:创建封装的组件和样式隔离(2)

带你读《现代Javascript高级教程》二十二、JS Shadow DOM:创建封装的组件和样式隔离(1)https://developer.aliyun.com/article/1349526?groupCode=tech_library


2)样式隔离

使用 Shadow DOM,我们可以实现样式隔离,确保组件的样式不会泄漏到外部环境。这样可以避免样式冲突,并提高组件的可维护性。

 

.custom-button {
      background-color: 007bff;
      color: white;
      padding: 10px 20px;
      border-radius: 4px;
      cursor: pointer;
    }
    Outer Button
    // 创建 Shadow Root
    const hostElement = document.getElementById('custom-button-container');
    const shadowRoot = hostElement.attachShadow({ mode: 'open' });
    // 创建自定义按钮
    const button = document.createElement('button');
    button.classList.add('custom-button');
    button.textContent = 'Shadow Button';
    // 将按钮添加到 Shadow Root 中
    shadowRoot.appendChild(button);

 

在上面的示例中,我们创建了一个具有相同类名的按钮,一个在外部环境中,一个在 Shadow DOM 组件中。由于 Shadow DOM 具有样式隔离的特性,这两个按钮将拥有不同的样式,且彼此不会相互影响。

4. 自定义 Shadow DOM API

我们还可以模拟实现一些自定义的 Shadow DOM API,以增强 Shadow DOM 的功能。下面是一个示例,展示如何实现一个自定义的 insertText 方法,用于向 Shadow DOM 中的元素插入文本内容:

 

function insertText(element, text) {
  const textNode = document.createTextNode(text);
  element.appendChild(textNode);}
const shadowRoot = hostElement.attachShadow({ mode: 'open' });const div = document.createElement('div');insertText(div, 'Hello, Shadow DOM!');
shadowRoot.appendChild(div);

 

在上面的示例中,我们定义了一个名为 insertText 的函数,它接收一个元素和文本内容作为参数,并创建一个文本节点,将文本内容插入到元素中。然后,我们在 Shadow Root 中创建一个 div 元素,并使用 insertText 方法插入文本内容。

5. 参考资料

以上是关于 JS Shadow DOM 的介绍。通过使用 Shadow DOM,我们可以轻松创建封装的 Web 组件,并实现样式和行为的隔离。它在创建可重用组件、样式隔离和构建复杂 Web 应用程序时非常有用。

 

相关文章
|
JavaScript 前端开发 Go
CSS 与 JS 对 DOM 解析和渲染的影响
【10月更文挑战第16天】CSS 和 JS 会在一定程度上影响 DOM 解析和渲染,了解它们之间的相互作用以及采取适当的优化措施是非常重要的。通过合理的布局和加载策略,可以提高网页的性能和用户体验,确保页面能够快速、流畅地呈现给用户。在实际开发中,要根据具体情况进行权衡和调整,以达到最佳的效果。
410 57
|
JavaScript 前端开发 索引
js中DOM的基础方法
【10月更文挑战第31天】这些DOM基础方法是操作网页文档结构和实现交互效果的重要工具,通过它们可以动态地改变页面的内容、样式和行为,为用户提供丰富的交互体验。
|
JavaScript 前端开发 开发者
.js的dom元素操作
【10月更文挑战第29天】通过灵活运用这些 DOM 元素操作方法,JavaScript 可以实现丰富的网页交互效果,如动态更新页面内容、响应用户操作、创建和删除页面元素等。在实际开发中,开发者可以根据具体的需求和场景,选择合适的 DOM 元素操作方法来实现所需的功能,为用户提供更加流畅和动态的网页体验。
|
XML 移动开发 JavaScript
js中BOM和DOM总结(基础篇)
文章总结了JavaScript的BOM和DOM知识点,包括window、screen、location、history、navigator对象,以及消息框、计时器和cookie。同时,介绍了DOM的概念、节点获取和修改方法,以及事件处理。
js中BOM和DOM总结(基础篇)
|
移动开发 JavaScript 前端开发
原生js如何获取dom元素的自定义属性
原生js如何获取dom元素的自定义属性
451 4
|
JavaScript 前端开发 API
探索Vue.js 3的组合式API:一种更灵活的组件状态管理方式
【10月更文挑战第5天】探索Vue.js 3的组合式API:一种更灵活的组件状态管理方式
|
JavaScript 前端开发 索引
你可能没有听说过 js中的 DOM操作还有这个: HTMLCollection 和 NodeList
该文章详细解释了JavaScript中HTMLCollection和NodeList这两种DOM集合类型的特性、使用方法及其区别,并通过实例代码展示了如何操作这两种集合来选取和遍历DOM元素。
|
JavaScript 前端开发 Swift
js之删除dom | 12-3
js之删除dom | 12-3
|
JavaScript 前端开发 容器
js之dom学习
js之dom学习
212 0
|
Web App开发 JavaScript 前端开发
用 JavaScript 创建 XPCOM 组件
用 JavaScript 创建 XPCOM 组件