Sobes.tech
Middle

Was ist Shadow DOM?

sobes.tech KI

Antwort von AI

Shadow DOM ist ein Web-Standard, der die Kapselung von DOM und CSS innerhalb einer Komponente ermöglicht. Es erstellt einen separaten, isolierten DOM-Baum, genannt "Schattenbaum" (shadow tree), der an ein Element im Hauptdokument angehängt wird, genannt "Schattenwurzel" (shadow root).

Vorteile des Shadow DOM:

  • CSS-Isolierung: Innerhalb des Shadow DOM definierte Stile "entlaufen" nicht nach außen und beeinflussen das Hauptdokument, und standardmäßig beeinflussen Stile aus dem Hauptdokument das Shadow DOM nicht.
  • DOM-Isolierung: Die Struktur des Shadow DOM ist vor dem Hauptdokument verborgen und über Standard-Auswahlmethoden (z.B. querySelector) nicht zugänglich.
  • JavaScript-Isolierung: Skripte, die im Hauptdokument ausgeführt werden, können nicht leicht auf Elemente innerhalb des Shadow DOM zugreifen.
  • Wiederverwendung: Mit Shadow DOM erstellte Komponenten können leicht in anderen Teilen der Anwendung oder sogar auf anderen Websites verwendet werden.

Erstellung des Shadow DOM:

// Das Element erhalten, an das das Shadow DOM angehängt werden soll
const hostElement = document.getElementById('my-component');

// Shadow Root erstellen
// 'open' macht das Shadow DOM von außen über hostElement.shadowRoot zugänglich
// 'closed' verbirgt das Shadow DOM
const shadowRoot = hostElement.attachShadow({ mode: 'open' });

// Elemente innerhalb des Shadow DOM hinzufügen
shadowRoot.innerHTML = `
  <style>
    /* Spezifische Stile für diese Komponente */
    h2 {
      color: blue;
    }
  </style>
  <h2>Überschrift innerhalb der Komponente</h2>
  <p>Absatz innerhalb der Komponente.</p>
`;

Merkmale:

  • Slots: Ermöglichen das Einfügen von externem Inhalt an bestimmten Stellen innerhalb des Shadow DOM.
  • Shadow Parts: Ermöglichen es, bestimmte Elemente innerhalb des Shadow DOM von außen zu stylen.

Das Shadow DOM ist eine Schlüsselkomponente für die Erstellung von Web-Komponenten (Web Components), die eine starke Kapselung bietet, die notwendig ist, um wiederverwendbare und eigenständige UI-Elemente zu erstellen.