Shadow DOM
Element.attachShadow() メソッドは、シャドウ DOM ツリーを特定の要素に追加し、そのシャドウルート (ShadowRoot) への参照を返します。
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
| 53 | 79 | 63 | 10 | 53 | 10 | |
| Element.attachShadow() メソッドは、シャドウ DOM ツリーを特定の要素に追加し、そのシャドウルート (ShadowRoot) への参照を返します。 | 53 | 79 | 63 | 10 | 53 | 10 |
| シャドウルートが複製可能かどうかを指定するブール値です。true に設定すると、Node.cloneNode() または Document.importNode() を使用してシャドウホストを複製した際、コピーにシャドウルートが含まれます。デフォルト値は false です。 | 124 | 124 | 123 | 17.4 | 124 | 17.4 |
| 論理値で、 true に設定された場合、フォーカス可能性に関するカスタム要素の問題を緩和します。シャドウ DOM のフォーカスができない部分がクリックされた場合、最初のフォーカス可能な部分がフォーカスを得て、シャドウホストは :focus のスタイルを利用することができます。既定値は false です。 | 53 | 79 | 94 | 13.1 | 53 | 13.4 |
| true に設定すると、シャドウルートがシリアライズ可能であることを示すブール値です。この値が設定されている場合、options.serializableShadowRoots パラメータを true に設定して Element.getHTML() または ShadowRoot.getHTML() メソッドを呼び出すことで、シャドウルートをシリアライズできます。デフォルト値は false です。 | 125 | 125 | 128 | 18 | 125 | 18 |
| Element.shadowRoot は読み取り専用のプロパティで、その要素がホストになっているシャドウルートを表します。 | 35 | 79 | 63 | 10 | 35 | 10 |
| composed は Event インターフェイスの読み取り専用プロパティで、イベントがシャドウ DOM 境界を越えて標準 DOM に伝播するかどうかを示す論理値を返すものです。 | 53 | 79 | 52 | 10 | 53 | 10 |
| composedPath() は Event インターフェイスのメソッドで、イベントの経路をリスナーが呼び出されるオブジェクトの配列で返します。シャドウルートが ShadowRoot.mode が closed の状態で作成された場合、シャドウツリーのノードは含まれません。 | 53 | 79 | 59 | 10 | 53 | 10 |
| getRootNode() は Node インターフェイスのメソッドで、そのコンテキストのオブジェクトのルート、利用できる場合はオプションでシャドウルートを含んだものを返します。 | 54 | 79 | 53 | 10.1 | 54 | 10.3 |
| isConnected は Node インターフェイスの読み出し専用のプロパティで、ノードが Document オブジェクトに(直接的または間接的に)接続されているかどうかを示す論理値を返します。 | 51 | 79 | 49 | 10 | 51 | 10 |
| clonable は ShadowRoot インターフェイスの読み取り専用プロパティで、シャドウルートが複製可能であれば true を返し、そうでなければ false を返します。 | 124 | 124 | 123 | 17.4 | 124 | 17.4 |
| delegatesFocus は ShadowRoot インターフェイスの読み取り専用プロパティで、シャドウルートがフォーカスを委任する場合は true、そうでなければ false を返します。 | 53 | 79 | 94 | 15 | 53 | 15 |
| host は ShadowRoot の読み取り専用プロパティで、 ShadowRoot が装着されている DOM 要素の参照を返します。 | 53 | 79 | 63 | 10 | 53 | 10 |
| mode は ShadowRoot の読み取り専用プロパティで、モードを open と closed のどちらかで示します。 これはシャドウルートの内部機能を JavaScript からアクセスできるかどうかを定義します。 | 53 | 79 | 63 | 10.1 | 53 | 10.3 |
| serializable は ShadowRoot インターフェイスの読み取り専用プロパティで、このシャドウルートがシリアライズ可能であれば、true を返します。 | 125 | 125 | 128 | 18 | 125 | 18 |
- 以前は別名で対応していました: cloneable (16.4)
- 以前は別名で対応していました: cloneable (16.4)
- Firefox 95 以前では、このプロパティは `<select>` 要素と `<input type='checkbox'>` 要素で誤って `false` に設定されていました。
- このバージョンで機能が削除されました (53)
- 以前は別名で対応していました: deepPath (50)
- このバージョンで機能が削除されました (53)
- 以前は別名で対応していました: deepPath (50)
基本構文
attachShadow(options) 実務での使いどころ
-
Shadow DOM の活用
Element.attachShadow() メソッドは、シャドウ DOM ツリーを特定の要素に追加し、そのシャドウルート (ShadowRoot) への参照を返します。
注意点
- 古いブラウザでは対応していない場合がある。
実装メモ
- 一部の API はセキュアコンテキスト (HTTPS) やユーザー操作起点を必要とする。利用前に要件を確認すること。