Sobes.tech
Middle

Mi az a Shadow DOM?

sobes.tech MI

Válasz az MI-től

Shadow DOM egy web szabvány, amely lehetővé teszi a DOM és a CSS inkapszulációját egy komponensen belül. Egy külön, elszigetelt DOM fát hoz létre, amit "árnyékfa" (shadow tree) néven ismerünk, és amely egy elemhez csatlakozik a fő dokumentumban, amit "árnyék gyökér" (shadow root) néven nevezünk.

A Shadow DOM előnyei:

  • CSS izoláció: A Shadow DOM belsejében meghatározott stílusok nem "szivárognak" ki, nem befolyásolják a fő dokumentumot, és alapértelmezés szerint a fő dokumentum stílusai nem befolyásolják a Shadow DOM-ot.
  • DOM izoláció: A Shadow DOM szerkezete el van rejtve a fő dokumentumtól, és nem érhető el standard kiválasztási módszerekkel (pl. querySelector).
  • JavaScript izoláció: A fő dokumentumban futó szkriptek nem férnek könnyen hozzá a Shadow DOM belső elemeihez.
  • Újrahasznosítás: A Shadow DOM-mal létrehozott komponensek könnyen használhatók más részein az alkalmazásnak vagy akár más weboldalakon.

Shadow DOM létrehozása:

// Az elem, amelyhez a Shadow DOM-ot hozzá szeretnénk adni
const hostElement = document.getElementById('my-component');

// Shadow Root létrehozása
// Az 'open' lehetővé teszi, hogy a Shadow DOM külsőleg elérhető legyen a hostElement.shadowRoot segítségével
// A 'closed' elrejti a Shadow DOM-ot
const shadowRoot = hostElement.attachShadow({ mode: 'open' });

// Elemek hozzáadása a Shadow DOM-hoz
shadowRoot.innerHTML = `
  <style>
    /* Ezen komponens specifikus stílusok */
    h2 {
      color: blue;
    }
  </style>
  <h2>Fejléc a komponensen belül</h2>
  <p>Bekezdés a komponensen belül.</p>
`;

Jellemzők:

  • Slotok: Lehetővé teszik külső tartalom beszúrását a Shadow DOM egyes részeibe.
  • Shadow Parts: Lehetővé teszik bizonyos elemek stílusozását a Shadow DOM-on kívülről.

A Shadow DOM kulcsfontosságú összetevője a webkomponensek (Web Components) létrehozásának, erős inkapszulációt biztosítva, amely szükséges az újrahasznosítható és önálló UI-elemek létrehozásához.