Widely available すべての主要ブラウザで対応済み。安心して使用可能。

対応ブラウザ

機能 デスクトップ モバイル
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
1+対応 (バージョン) 未対応 注釈あり サブ機能の解説は MDN Web Docs (CC BY-SA 2.5)
注釈 1件
対応条件
  • 以前は別名で対応していました: cloneable (16.4)
注釈 1件
対応条件
  • 以前は別名で対応していました: cloneable (16.4)
注釈 1件
実装メモ
  • Firefox 95 以前では、このプロパティは `<select>` 要素と `<input type='checkbox'>` 要素で誤って `false` に設定されていました。
注釈 2件
削除済み
  • このバージョンで機能が削除されました (53)
対応条件
  • 以前は別名で対応していました: deepPath (50)
注釈 2件
削除済み
  • このバージョンで機能が削除されました (53)
対応条件
  • 以前は別名で対応していました: deepPath (50)

基本構文

JAVASCRIPT
attachShadow(options)

実務での使いどころ

  • Shadow DOM の活用

    Element.attachShadow() メソッドは、シャドウ DOM ツリーを特定の要素に追加し、そのシャドウルート (ShadowRoot) への参照を返します。

注意点

  • 古いブラウザでは対応していない場合がある。

実装メモ

  • 一部の API はセキュアコンテキスト (HTTPS) やユーザー操作起点を必要とする。利用前に要件を確認すること。