shadow DOM 淺析

pardon110發表於2019-08-07

引言

Shadow-dom 遊離在 DOM 樹之外的節點樹,但是他的建立基於普通 DOM 元素(非 document),並且建立後的 Shadow-dom 節點可以從介面上直觀的看到。更重要的是,Shadow-dom 具有良好的密封性。換而言之,它具有某種意義上的介面能力,是瀏覽器提供了一種封裝功能。典型場景,即使用video標籤,在src屬性填寫影片地址,即可播放影片

目的

  • 讓瀏覽器開發者有意隱藏DOM結構
  • Shadow DOM 為Web元件中的 DOM和 CSS提供了封裝

定義

  • shaw-dom瀏覽器的一種能力
  • 允許瀏覽器渲染文件時向其中的Dom結構中插入一棵DOM元素子樹
  • 但這棵子樹並不在主DOM樹中

概念

  • document 正常文件
  • shadow-host 對於一個內部有 shadow-dom 的元素而言,它必然需要一個宿主元素
  • shadow-root 透過 createShadowRoot 返回的文件片段被稱為 shadow-root
  • contents 各子元件的 DOM 的具體實現

規則

  • Shadow DOM 必須附加在一個元素上
  • 可以是HTML檔案中的一個元素,也可以是指令碼中建立的元素
  • 以是原生的元素,如<div>、<p>;也可以是自定義元素如 <my-element>

後記

  • vue,react 中的web元件與自定義元件,可以用介面標籤的形式注入Dom文件源於此
本作品採用《CC 協議》,轉載必須註明作者和本文連結