Middle
Mis on Shadow DOM?
sobes.tech AI
Vastus AI-lt
Shadow DOM on veebistandard, mis võimaldab inkapsuleerida DOM-i ja CSS-i komponendi sees. See loob eraldi, isoleeritud DOM-puu, mida nimetatakse "varjupuu" (shadow tree), mis on ühendatud põhidokumendi elemendiga, mida nimetatakse "varjupuu juureks" (shadow root).
Shadow DOM eelised:
- CSS-i isolatsioon: Shadow DOM-i sees määratletud stiile ei "levi" välja, mõjutades põhidokumenti, ja vastupidi, põhidokumendi stiilid tavaliselt Shadow DOM-i ei mõjuta.
- DOM-i isolatsioon: Shadow DOM-i struktuur on varjatud põhidokumendist ega ole saadaval standardsete valikumeetoditega (näiteks
querySelector). - JavaScript-i isolatsioon: Skriptid, mis töötavad põhidokumendis, ei pääse lihtsalt Shadow DOM-i elementidele ligi.
- Taaskasutus: Shadow DOM-iga loodud komponendid saab hõlpsasti kasutada teistes osades või isegi teistel veebilehtedel.
Shadow DOM loomine:
// Saame elemendi, millele soovime Shadow DOM-i lisada
const hostElement = document.getElementById('my-component');
// Loome Shadow Root
// 'open' muudab Shadow DOM-i väljastpoolt kättesaadavaks hostElement.shadowRoot kaudu
// 'closed' peidab Shadow DOM-i
const shadowRoot = hostElement.attachShadow({ mode: 'open' });
// Lisame elemendid Shadow DOM-i
shadowRoot.innerHTML = `
<style>
/* Selle komponendi stiilid */
h2 {
color: blue;
}
</style>
<h2>Komponendi sisemine pealkiri</h2>
<p>Komponendi sisemine lõik.</p>
`;
Omadused:
- Slaidid (Slots): võimaldavad sisestada välise sisu teatud kohtadesse Shadow DOM-i sees
- Shadow Parts: võimaldavad stiilida teatud elemente Shadow DOM-i sees väljastpoolt
Shadow DOM on oluline komponentide loomisel veebikomponentide (Web Components) jaoks, pakkudes tugevat inkapsulatsiooni, mis on vajalik korduvkasutatavate ja iseseisvate UI-elementide loomiseks.