Sådan bruges HTML & Med Shadow DOM
HTML Slot er en af de mest bemærkelsesværdige standarder, der er lavet af W3C. Kombiner det med en anden imponerende W3C-standard, der hedder skabeloner, og du har en fantastisk concoction at arbejde med. Være i stand til Opret og tilføj HTML-elementer til en side ved hjælp af JavaScript er en nødvendig og vigtig opgave.
Det er nyttigt, når en kodestykke skal vises kun på bestemte tidspunkter, eller når du ikke ønsker at skrive hundredvis af tilsvarende strukturerede HTML-elementer, men vil automatisere processen.
Oprettelse af HTML-elementer i JavaScript er ikke så ønskeligt. Det er en besvær at tjekke og tjekke igen, hvis du har dækket alle tags, placeret dem i den rigtige rækkefølge, alt i alt er der bare også meget at skrive og holde styr på. Denne uro, dog, fik en løsning når tag fremkom. Hvis noget skal være tilføjet til siden dynamisk, du kan sætte det inde i
element.
I dette indlæg vil jeg vise dig, hvordan du kan bruge
og tags sammen med JavaScript til opret en mini-HTML-tabelfabrik der kan oprette og udfylde hundredvis af lignende tabeller.
Det
og
tags
Det tag indeholder HTML-kode som vil ikke blive gengivet af browsere indtil den er korrekt tilføjet til dokumentet ved hjælp af JavaScript. Det
tag er en placeholder du tilføjer til en Shadow DOM som kan laves af indholdet af element.
EN Skygge DOM ligner en almindelig DOM (dokumentmodellen analyseret fra HTML). Det skaber et scoped træ (et Shadow DOM-træ), der har a egen rod og kan også have a egen stil.
Når du indsætter Shadow DOM-træet i et element i hoveddokumentet - bliver elementet så kaldt skygge vært -, alle barnets elementer i skyggeværten, der er markeret med slot
attribut (ikke det samme som førnævnte
tag) vil tage deres plads i den nyindførte subtree.
The Shadow DOM, som skrevet af denne artikel (juli 2017), er understøttes kun i WebKit- og Blink-baserede browsere men du kan til enhver tid kontrollere den faktiske tilstand af browser support på CanIUse.
Opsætning af HTML
Stadig forvirrende? Lad os se nogle kode, der begynder med element.
Inde Inde i skabelonen, Jeg har også tilføjet nogle grundlæggende stilarter til bordet ved hjælp af Udenfor skabelonen, der er to Hver Lige nu er alt, hvad du kan se på siden, tekststrengene i spændene, så vi skal også tilføje nogle JavaScript. Ved at bruge Javascript indsætter vi bordet inde i skabelonen i begge divs som et Shadow DOM-træ. Efter indsættelsen placeres spændene i deres respektive slots inde i bordet og viser de ønskede kolonititler eller celleværdier. Resultatet bliver to automatisk genererede tabeller der bruger den samme skabelon. For det første skal vi kontrollere, om Shadow DOM understøttes i brugerens browser. Det Vi opretter en brugerdefineret variabel kaldet Inde i Der er to Så, vi Tilføj en kopi af skabelonindholdet til skygge DOM træet ved hjælp af Og vores dynamiske HTML-tabeller er klar, her er hvordan produktionen ser ud i Chrome:, der er en
godt brug som en blueprint til skabe nogle tabeller det vil blive tilføjet til et dokument. Der er
elementer inde i tabelcellerne ( og ) fungere som pladsholdere for kolonne titler og celle værdier. Hver slot har en unik navn
tilskrive det identificerer det.
tag.
, for to separate tabeller, vi vil tilføje til siden.
elementet har a
slot
attribut af hvilken værdi er svarende til navn
værdi af deres tilsvarende
tag indeni .
Vedhæftning af skygge-DOM-træet
attachShadow ()
metode Føjer et Shadow DOM-træ til et element og returnerer rodknuden for det pågældende Shadow DOM-træ. Det hvis
tilstand i koden nedenfor kontrollerer, om browseren understøtter denne metode ved at teste om dividerne på siden har attachShadow
metode. // Kontroller, om Shadow DOM understøttes, hvis ('attachShadow' i document.createElement ('div')) else console.warn ('attachShadow ikke understøttes');
templateContent
at tjener som reference til indholdet af skabelonen. hvis ('attachShadow' i document.createElement ('div')) let templateContent = document.querySelector ('skabelon'). indhold; lad divs = document.querySelectorAll ('div'); divs.forEach (funktion (div) // inside loop); else console.warn ('attachShadow ikke understøttet');
for hver
loop, et Shadow DOM træ er knyttet til hver div (div.attachShadow (mode: 'open')
).mode
muligheder til attachShadow
: åben
og lukket
. Hvis lukket
blev valgt rodknuden for Shadow DOM-træet ville blive utilgængeligt til udenfor DOM elementer og objekter.templateContent.cloneNode (sand)
metode. hvis ('attachShadow' i document.createElement ('div')) let templateContent = document.querySelector ('skabelon'). indhold; lad divs = document.querySelectorAll ('div'); divs.forEach (funktion (div) div.attachShadow (mode: 'open'). appendChild (templateContent.cloneNode (true))); else console.warn ('attachShadow ikke understøttet');