Hoe HTML & te gebruiken met Shadow DOM
HTML-slot is een van de meest opmerkelijke standaards die door W3C zijn gemaakt. Combineer dat met een andere indrukwekkende W3C-standaard genaamd templates, en je hebt een fantastisch brouwsel om mee te werken. In de gelegenheid zijn maak en voeg HTML-elementen toe naar een pagina met behulp van JavaScript is een noodzakelijke en belangrijke taak.
Het is handig wanneer een codefragment moet verschijnen alleen op bepaalde tijden, of wanneer u niet honderden op dezelfde manier gestructureerde HTML-elementen wilt typen, maar wel wilt automatiseer het proces.
HTML-elementen maken in JavaScript is niet zo wenselijk. Het is een hele klus om te controleren en opnieuw te controleren of je alle tags hebt afgedekt, ze in de juiste volgorde hebt geplaatst, alles bij elkaar is er gewoon te veel te typen en bij te houden. Deze onrust echter, heb een oplossing wanneer de tag verscheen. Als er iets moet zijn dynamisch toegevoegd aan de pagina, je kunt het in de
element.
In deze post zal ik je laten zien hoe je de kunt gebruiken
en tags samen met JavaScript token maak een mini-HTML-tabelfabriek die honderden vergelijkbare tabellen kan maken en vullen.
De
en
labels
De tag bevat HTML-code die wordt niet weergegeven door browsers totdat het correct is toegevoegd aan het document, met behulp van JavaScript. De
tag is a tijdelijke aanduiding die u toevoegt aan een schaduwdomein welke gemaakt kan worden van de inhoud van de element.
EEN Schaduw DOM is vergelijkbaar met een gewone DOM (het documentmodel is geparseerd vanuit HTML). Het creëert een scopedboom (een schaduw-DOM-structuur), die een eigen root en kan ook een hebben stijl van zijn eigen.
Wanneer u de schaduw-DOM-structuur in een element in het hoofddocument invoegt, wordt het element het schaduw host -, alle onderliggende elementen van de schaduwhost die zijn gemarkeerd met de sleuf
attribuut (niet hetzelfde als de hiervoor genoemde
tag) zal plaats nemen in de nieuw ingevoegde substructuur.
De Shadow DOM, zoals van het schrijven van dit artikel (juli 2017), zijn alleen ondersteund in WebKit- en Blink-gebaseerde browsers maar u kunt op elk moment de actuele status van de browserondersteuning op CanIUse bekijken.
De HTML instellen
Nog steeds verwarrend? Laten we wat code zien, te beginnen met de element.
Binnen In de sjabloon, Ik heb ook toegevoegd enkele basisstijlen voor de tafel, met behulp van de Buiten de sjabloon, er zijn er twee Elk Op dit moment zijn alles wat u op de pagina kunt zien de tekstreeksen in de reeksen, dus we moeten ook wat JavaScript toevoegen. Met Javascript voegen we de tabel vanuit de sjabloon in beide divs als een schaduw DOM-boom. Na het invoegen worden de overspanningen geplaatst in hun respectieve sleuven in de tabel en worden de gewenste kolomtitels of celwaarden weergegeven. Het resultaat zal zijn twee automatisch gegenereerde tabellen die dezelfde sjabloon gebruiken. Eerst moeten we controleren of de schaduw-DOM wordt ondersteund in de browser van de gebruiker. De We maken een aangepaste variabele genaamd Binnen in de Er zijn twee Dan gaan we voeg een kopie van de sjablooninhoud toe naar de schaduw DOM-boom met behulp van de En onze dynamische HTML-tabellen zijn klaar, zo ziet de uitvoer eruit in Chrome:, er is een
goed gebruik als een blauwdruk voor een aantal tabellen maken die wordt toegevoegd aan een document. Er zijn
elementen in de tabelcellen ( en ) fungeren als tijdelijke aanduidingen voor de kolomtitels en celwaarden. Elke slot heeft een uniek naam
ken dat toe identificeert het.
label.
, voor twee afzonderlijke tabellen die we aan de pagina willen toevoegen.
element heeft een
sleuf
attribuut waarvan de waarde is gelijk aan de naam
waarde van hun overeenkomstige
tag binnen .
De schaduw-DOM-boom bevestigen
attachShadow ()
methode hecht een schaduw-DOM-boom aan een element en retourneert het hoofdknooppunt van die schaduwdomboom. De als
voorwaarde in de onderstaande code controleert of de browser deze methode ondersteunt door te testen of de divs op de pagina de attachShadow
methode. // controleer of Shadow DOM wordt ondersteund als ('attachShadow' in document.createElement ('div')) else console.warn ('attachShadow niet ondersteund');
templateContent
dat dient als een referentie naar de inhoud van de sjabloon. if ('attachShadow' in document.createElement ('div')) let templateContent = document.querySelector ('template'). inhoud; let divs = document.querySelectorAll ('div'); divs.forEach (function (div) // inside loop); else console.warn ('attachShadow niet ondersteund');
forEach
loop, een Shadow DOM-tree is gekoppeld aan elke div (div.attachShadow (mode: 'open')
).mode
opties voor attachShadow
: Open
en Gesloten
. Als Gesloten
werd gekozen als het basisknooppunt van de schaduw-DOM-boom zou ontoegankelijk worden naar externe DOM-elementen en objecten.templateContent.cloneNode (true)
methode. if ('attachShadow' in document.createElement ('div')) let templateContent = document.querySelector ('template'). inhoud; let divs = document.querySelectorAll ('div'); divs.forEach (functie (div) div.attachShadow (mode: 'open'). appendChild (templateContent.cloneNode (true))); else console.warn ('attachShadow niet ondersteund');