HTMLツール

無料 宣言的Shadow DOMスニペットジェネレーター

Scoped CSS、スロット、サーバーレンダリング対応の宣言的Shadow DOM HTMLスニペットを生成します。

ツールを読み込み中...

宣言的Shadow DOMスニペットジェネレーターとは

宣言的シャドウDOMはJavaScriptなしでHTMLマークアップからシャドウDOMを作成するブラウザ機能です。ホスト要素内のshadowrootmode属性を持つtemplate要素はブラウザにシャドウルートを作成しテンプレートコンテンツを投入するように指示します。これによりスコープ付きCSSを持つウェブコンポーネントのサーバーサイドレンダリングが可能になりJavaScriptが読み込まれる前に機能します。

クイックアンサー

宣言的シャドウDOMはJavaScriptなしでHTMLマークアップからカプセル化されたDOMとスコープ付きCSSを作成します。カスタム要素のホストタグ内で <template shadowrootmode="open"> を使用します。Chrome、Edge、Safariでサポートされています。Firefox用のフォールバックコンテンツを含めてください。

Last updated: 2026-05-28

制限事項

  • Firefoxはまだ宣言的シャドウDOMをサポートしていません(2026年現在)。DSDがサポートされていない場合にCSSで表示されるフォールバックコンテンツを常に含めてください。
  • 宣言的シャドウDOMは最初のページ解析時にのみシャドウルートとコンテンツを作成します。動的に追加されたDSDマークアップは処理されません。クライアントサイド作成には命令的attachShadow()を使用してください。
  • 一部のJavaScriptフレームワークやライブラリはSSRハイドレーションのための宣言的シャドウDOMとまだ統合されていません。フレームワークベースのアプリでDSDを採用する前にフレームワークのサポートを確認してください。

Sources:MDN Web Docs · W3C Specifications · jquery.app on GitHub

使い方

  1. ハイフンを含むカスタム要素のホストタグを入力します(有効なカスタム要素名に必要)。
  2. オープンまたはクローズドのシャドウルートモードを選択します。オープンはshadowRootを介したJavaScriptアクセスを許可します。
  3. スロット要素を使用したコンテンツ投影用の内部HTMLコンテンツを追加します。
  4. オプションでこのシャドウルート内でのみ適用されるスコープ付きCSSを追加します。
  5. スニペットをコピーしてSSR出力または静的HTMLに含めます。

主な用途

  • JavaScriptなしで即座に表示されるようにスコープ付きCSSを持つウェブコンポーネントをサーバー上でレンダリングします。
  • 任意のページに埋め込むためのスタイルが分離された自己完結型HTMLウィジェットを作成します。
  • ビルドステップなしでシャドウDOMのカプセル化を使用した静的サイトコンポーネントを構築します。

用途

使用例

サーバーサイドレンダリングされたユーザーカード

ユーザーカードコンポーネントがアバター、名前、役割を表示します。宣言的シャドウDOMを使用してスコープ付きCSSでカードをサーバー上でレンダリングします。カードは即座にスタイル設定されて表示されJavaScriptがインタラクティブ機能のためにハイドレーションします。

スコープ付きCSSウィジェット

埋め込み可能なウィジェットが宣言的シャドウDOMを使用してスタイルをカプセル化します。ホストページのCSSはウィジェットに影響を与えずウィジェットのCSSも外部に漏れません。iframeは不要です。

よくあるミス

  • ハイフンのないホストタグを使用するとカスタム要素名は有効であるためにハイフンを含む必要があります。
  • shadowrootmodeをclosedに設定して外部のJavaScriptからシャドウルートにアクセスできると期待するとクローズドモードはすべての外部JavaScriptアクセスをブロックします。
  • 宣言的シャドウDOMをサポートしないブラウザ用のフォールバックコンテンツを忘れるとユーザーにはコンテンツの代わりに何も表示されません。

検証

  1. DevToolsのElementsパネルを開きホスト要素内に#shadow-rootが存在することを確認します。
  2. JavaScriptを無効にしてページをテストしスクリプトなしでシャドウDOMが正しくレンダリングされることを確認します。

FAQ

宣言的Shadow DOMスニペットジェネレーターのFAQ

宣言的シャドウDOMをサポートしているブラウザは?

Chrome 90以上、Edge 90以上、Safari 17以上が宣言的シャドウDOMをサポートしています。Firefoxのサポートは開発中です(2026年現在)。サポートしていないブラウザのためにホスト要素内にフォールバックコンテンツを含めCSS @supportsを使用して表示/非表示を切り替えてください。

宣言的シャドウDOMをスロットと一緒に使用できますか?

はい。スロットは宣言的シャドウDOMでも命令的シャドウDOMと同じように機能します。名前付きスロット(slot name=heading)は特定のコンテンツをシャドウルートに投影します。デフォルトスロットは割り当てられていないコンテンツを投影します。スロットを使用して宣言的シャドウDOMコンポーネントを構成可能にします。

関連ツール

その他のhtmlツール

こちらもお試しください

こちらもお試しください