Sobes.tech
Middle

Czym jest Shadow DOM?

sobes.tech AI

Odpowiedź od AI

Shadow DOM to standard internetowy, który pozwala na enkapsulację DOM i CSS wewnątrz komponentu. Tworzy oddzielne, izolowane drzewo DOM, zwane "drzewem cienia" (shadow tree), które jest dołączane do elementu w głównym dokumencie, zwanego "korzeniem cienia" (shadow root).

Zalety Shadow DOM:

  • Izolacja CSS: Style zdefiniowane wewnątrz Shadow DOM nie "uciekają" na zewnątrz, nie wpływając na główny dokument, a domyślnie style z głównego dokumentu nie wpływają na Shadow DOM.
  • Izolacja DOM: Struktura Shadow DOM jest ukryta przed głównym dokumentem i nie jest dostępna przez standardowe metody wyboru (np. querySelector).
  • Izolacja JavaScript: Skrypty działające w głównym dokumencie nie mogą łatwo uzyskać dostępu do elementów wewnątrz Shadow DOM.
  • Ponowne użycie: Komponenty utworzone z Shadow DOM mogą być łatwo używane w innych częściach aplikacji lub nawet na innych stronach internetowych.

Tworzenie Shadow DOM:

// Pobieramy element, do którego chcemy dołączyć Shadow DOM
const hostElement = document.getElementById('my-component');

// Tworzymy Shadow Root
// 'open' sprawia, że Shadow DOM jest dostępny z zewnątrz przez hostElement.shadowRoot
// 'closed' ukrywa Shadow DOM
const shadowRoot = hostElement.attachShadow({ mode: 'open' });

// Dodajemy elementy do Shadow DOM
shadowRoot.innerHTML = `
  <style>
    /* Style specyficzne dla tego komponentu */
    h2 {
      color: blue;
    }
  </style>
  <h2>Nagłówek wewnątrz komponentu</h2>
  <p>Paragraf wewnątrz komponentu.</p>
`;

Cechy:

  • Sloty: Pozwalają na wstawianie zewnętrznej zawartości w określonych miejscach wewnątrz Shadow DOM.
  • Shadow Parts: Pozwalają na stylizację określonych elementów wewnątrz Shadow DOM z zewnątrz.

Shadow DOM jest kluczowym elementem do tworzenia web components (Web Components), zapewniając silną enkapsulację, niezbędną do tworzenia wielokrotnego użytku i samodzielnych elementów UI.