--- title: シャドウ DOM の使用 slug: Web/Web_Components/Using_shadow_DOM tags: - API - DOM - ガイド - ウェブコンポーネント - シャドウ DOM translation_of: Web/Web_Components/Using_shadow_DOM --- {{DefaultAPISidebar("Web Components")}} ウェブコンポーネントにおける重要な側面の一つが、カプセル化です。マークアップ構造、スタイル、動作を隠蔽し、コード上の他のコードから分離することで、他の部分でクラッシュすることを防ぎ、コードをきれいにしておくことができます。シャドウ DOM API はこの主要部分であり、隠蔽され分離された DOM を要素に取り付けるための方法を提供しています。この記事ではシャドウ DOM を使う基本を記述しています。 > **Note:** シャドウ DOM は Firefox (バージョン 63 以降)、Chrome、Opera、 Safari が対応しています。 Chromium ベースの新しい Edge (75 以降)も対応しています。古い Edge は対応していません。 ## 高水準のビュー この記事は、すでにあなたが [DOM (Document Object Model)](/ja/docs/Web/API/Document_Object_Model/Introduction) の概念を理解していることを想定しています。これはツリー上の構造で、接続されたノードがマークアップ文書(ウェブ文書の場合は通常 HTML 文書)に現れるさまざまな要素や文字列を表します。例として、以下のような HTML の断片を考えてみましょう。 ```html Simple DOM example
A red Tyrannosaurus Rex: A two legged dinosaur standing upright like a human, with small arms, and a large head with lots of sharp teeth.

Here we will add a link to the Mozilla homepage

``` この断片によって以下のような DOM 構造が構成されます。 ![](dom-screenshot.png) _シャドウ_ DOM により、通常の DOM ツリーの要素の下に隠れた DOM ツリーを取り付けることができます。このシャドウ DOM ツリーはシャドウルートから始まり、その下には普通の DOM ツリーと同様に任意の要素を追加することができます。 ![文書、シャドウルート、シャドウホストの相互作用を示す図の SVG 版。](shadowdom.svg) 以下にシャドウ DOM における用語を定義します。 - **シャドウホスト**: シャドウ DOM が取り付けられた、通常の DOM ノード - **シャドウツリー**: シャドウ DOM の中にある DOM ツリー - **シャドウ境界**: シャドウ DOM と通常の DOM の境界 - **シャドウルート**: シャドウツリーの根ノード シャドウ DOM 内のノードには、シャドウでないノードと全く同じように影響を与えることができます。たとえば、子を追加したり、属性を設定したり、element.style.foo を使用して個々のノードのスタイルを設定したり、 {{htmlelement("style")}} 要素内でシャドウ DOM ツリー全体へのスタイルを追加したりすることができます。違いは、シャドウ DOM 内のどのコードもその外の何かに影響を与えることができず、便利なカプセル化ができることです。 なお、シャドウ DOM は決して新しいものではありません。ブラウザーは長い間、要素の内部構造をカプセル化するためにこれを使用してきました。例えば、既定のブラウザーコントロールが公開されている {{htmlelement("video")}} 要素を思い浮かべてください。 DOM には `