Så här använder du HTML & Med Shadow DOM
HTML Slot är en av W3C: s mest anmärkningsvärda standarder. Kombinera det med en annan imponerande W3C-standard som heter mallar, och du har en fantastisk sammansättning att arbeta med. Att kunna skapa och lägg till HTML-element till en sida använder JavaScript är en nödvändig och viktig uppgift.
Det är användbart när ett kodfragment måste visas bara vid vissa tillfällen, eller när du inte vill skriva ut hundratals liknande strukturerade HTML-element men vill automatisera processen.
Skapa HTML-element i JavaScript är inte så önskvärt. Det är ett krångel som måste kolla och kontrollera om du har täckt alla taggar, placerat dem i rätt ordning, allt är det bara för mycket att skriva och hålla reda på. Denna oro, dock, fick en lösning när tagg uppträdde. Om något behöver vara läggs till sidan dynamiskt, du kan lägga den inuti
element.
I det här inlägget kommer jag att visa dig hur du kan använda
och taggar tillsammans med JavaScript till skapa en mini HTML-tabellfabrik som kan skapa och fylla i hundratals liknande tabeller.
De
och
taggar
De taggen innehåller HTML-kod som kommer inte att göras av webbläsare tills det är korrekt lagt till i dokumentet, med hjälp av JavaScript. De
taggen är en platshållare du lägger till i en Shadow DOM vilket kan göras av innehållet i element.
en Skugg DOM liknar en vanlig DOM (dokumentmodellen tolkas från HTML). Det skapar ett scoped träd (ett Shadow DOM-träd), som har a egen rots och kan också ha en egen stil.
När du lägger in Shadow DOM-trädet i ett element i huvuddokumentet - kommer elementet då att kallas skugg värd -, alla barnelementen i skuggvärden som är markerade med spår
attribut (inte samma som ovan nämnda
tagg) kommer ta plats i den nyligen införda subtreeen.
Skuggan DOM, som att skriva denna artikel (juli 2017), är stöds endast i WebKit- och Blink-baserade webbläsare men du kan när som helst kontrollera det faktiska läget för webbläsarsupport på CanIUse.
Ställa in HTML
Fortfarande förvirrande? Låt oss se någon kod, som börjar med element.
Inuti Inuti mallen, Jag har också lagt till några grundläggande stilar för bordet, med hjälp av Utanför mallen, det finns två Varje Just nu kan allt du ser på sidan är textsträngarna i spannarna, så vi måste lägga till lite JavaScript också. Med hjälp av Javascript lägger vi in tabellen inifrån mallen i båda delarna som ett Shadow DOM-träd. Efter införandet placeras spännarna i sina respektive slitsar inuti bordet och visar önskade kolumntitlar eller cellvärden. Resultatet blir två automatiskt genererade tabeller som använder samma mall. Först måste vi kontrollera om skuggdomen stöds i användarens webbläsare. De Vi skapar en anpassad variabel som heter Inuti Det finns två Då vi Lägg till en kopia av mallinnehållet till Shadow DOM-trädet med hjälp av Och våra dynamiska HTML-tabeller är klara, här ser utmatningen ut i Chrome:, det finns en
väl använd som en ritning för skapa några tabeller som läggs till i ett dokument. Det finns
element inuti bordcellerna ( och ) agerar som platshållare för kolumntitlarna och cellvärdena. Varje slot har en unik namn
ange det identifierar den.
märka.
, För två separata tabeller vill vi lägga till sidan.
elementet har a
spår
attribut av vilket värde är lika med namn
värde av deras motsvarande
tagga inuti .
Bifoga skuggan DOM-trädet
attachShadow ()
metod fäster ett Shadow DOM-träd till ett element och returnerar rotnodet för det Shadow DOM-trädet. De om
villkoret i koden nedan kontrollerar om webbläsaren stöder den här metoden genom att testa om delarna på sidan har attachShadow
metod. // kontrollera om Shadow DOM stöds om ('attachShadow' i document.createElement ('div')) else console.warn ('attachShadow not supported');
templateContent
den där fungerar som referens till innehållet i mallen. om ('attachShadow' i document.createElement ('div')) let templateContent = document.querySelector ('template'). innehåll; låt divs = document.querySelectorAll ('div'); divs.forEach (funktion (div) // inom loop); else console.warn ("attachShadow inte stöds");
för varje
loop, ett Shadow DOM-träd är fäst vid varje div (div.attachShadow (mode: 'open')
).läge
alternativ för attachShadow
: öppna
och stängd
. Om stängd
valdes i root-noden för Shadow DOM-trädet skulle bli otillgänglig till externa DOM-element och objekt.templateContent.cloneNode (true)
metod. om ('attachShadow' i document.createElement ('div')) let templateContent = document.querySelector ('template'). innehåll; låt divs = document.querySelectorAll ('div'); divs.forEach (funktion (div) div.attachShadow (mode: 'open'). appendChild (templateContent.cloneNode (true))); else console.warn ("attachShadow inte stöds");