Declarative shadow DOM
<template> は HTML の要素で、HTML のフラグメントを保持し、後で JavaScript を使用して使用したり、シャドウ DOM の中に直接生成したりするためのメカニズムとして機能します。
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
| 124 | 124 | 125 | 18 | 124 | 18 | |
| HTML 属性 | ||||||
| この要素を使用して作成した ShadowRoot の clonable プロパティの値を true に設定します。 設定されている場合、シャドウホスト(この の親要素)の複製を Node.cloneNode() または Document.importNode() で作成すると、コピーにシャドウルートが含まれます。 | 124 | 124 | 125 | 17.5 | 124 | 17.5 |
| この要素を使用して作成した ShadowRoot の delegatesFocus プロパティの値を true に設定します。 これが設定されていて、シャドウツリー内のフォーカス可能でない要素が選択されている場合、フォーカスはツリー内の最初のフォーカス可能な要素に譲られます。 この値は false が既定値です。 | 123 | 123 | 123 | 16.4 | 123 | 16.4 |
| 親要素のシャドウルートを生成します。 これは Element.attachShadow() メソッドの宣言版で、同じenumerated値を受け入れます。 | 111 | 111 | 123 | 16.4 | 111 | 16.4 |
| この要素を使用して作成した ShadowRoot の serializable プロパティの値を true に設定します。 設定されている場合、シャドウルートは Element.getHTML() または ShadowRoot.getHTML() メソッドを、options.serializableShadowRoots 引数を true に設定して呼び出すことでシリアライズされます。 この値は false が既定値です。 | 125 | 125 | | 18 | 125 | 18 |
| DOM API | ||||||
| shadowRootDelegatesFocus は HTMLTemplateElement インターフェイスのプロパティで、関連付けられた 要素の shadowrootdelegatesfocus 属性の値を反映します。 | 123 | 123 | 123 | 18 | 123 | 18 |
| shadowRootMode は HTMLTemplateElement インターフェイスのプロパティで、関連付けられた 要素の shadowrootmode 属性の値を反映します。 | 111 | 111 | 123 | 16.4 | 111 | 16.4 |
| shadowRootSerializable プロパティは、関連付けられた 要素の shadowrootserializable 属性の値を反映します。 | 125 | 125 | 128 | 18 | 125 | 18 |
- このバージョンで機能が削除されました (111)
- 以前は別名で対応していました: shadowroot (90)
- このバージョンで機能が削除されました (111)
- 以前は別名で対応していました: shadowroot (90)
- このバージョンで機能が削除されました (111)
- 以前は別名で対応していました: shadowroot (90)
基本構文
<my-card>
<template shadowrootmode="open">
<style>
:host { display: block; border: 1px solid #ccc; padding: 1rem; }
::slotted(h2) { color: #333; }
</style>
<slot name="title"></slot>
<slot></slot>
</template>
<h2 slot="title">Card Title</h2>
<p>Card Description</p>
</my-card> ライブデモ
実務での使いどころ
-
Declarative shadow DOM の活用
<template> は HTML の要素で、HTML のフラグメントを保持し、後で JavaScript を使用して使用したり、シャドウ DOM の中に直接生成したりするためのメカニズムとして機能します。
注意点
- 古いブラウザでは対応していない場合がある。
アクセシビリティ
- スクリーンリーダーでの読み上げを確認すること。