Come usare HTML & con Shadow DOM
Slot HTML è uno degli standard più notevoli realizzati dal W3C. Combinalo con un altro impressionante standard W3C chiamato modelli, e hai una favolosa miscela con cui lavorare. Essere capace di creare e aggiungere elementi HTML a una pagina usando JavaScript è un compito necessario e importante.
È utile quando uno snippet di codice deve apparire solo in determinati momenti, o quando non vuoi digitare centinaia di elementi HTML strutturati in modo simile ma vuoi automatizzare il processo.
La creazione di elementi HTML in JavaScript è non così desiderabile. È una seccatura dover controllare e ricontrollare se hai coperto tutti i tag, metterli nell'ordine giusto, tutto sommato, c'è solo pure molto da digitare e tenere traccia di. Questo tumulto, tuttavia, ho una soluzione quando il tag apparso. Se qualcosa deve essere aggiunto alla pagina in modo dinamico, puoi metterlo dentro il
elemento.
In questo post, ti mostrerò come puoi usare il
e tag insieme con JavaScript a creare una mini fabbrica di tabelle HTML che può creare e popolare centinaia di tabelle simili.
Il
e
tag
Il il tag contiene codice HTML non sarà reso dai browser fino a quando non viene aggiunto correttamente al documento, utilizzando JavaScript. Il
il tag è a segnaposto aggiunto a un DOM ombra che può essere fatto del contenuto del elemento.
UN DOM ombra è simile a un normale DOM (il modello di documento analizzato da HTML). esso crea un albero con scope (un albero DOM ombra), che ha a radice propria e può anche avere un stile a sé stante.
Quando si inserisce l'albero DOM ombra in un elemento nel documento principale, l'elemento verrà chiamato ospite d'ombra -, tutti gli elementi figlio dell'host ombra contrassegnati con fessura
attributo (non lo stesso di cui sopra
tag) lo farà prendi il loro posto nella sottostruttura appena inserita.
The Shadow DOM, come di questo articolo (luglio 2017), sono supportato solo nei browser basati su WebKit e Blink ma puoi verificare lo stato effettivo del supporto del browser su CanIUse in qualsiasi momento.
Configurare l'HTML
Ancora confuso? Vediamo un po 'di codice, a partire da elemento.
Dentro All'interno del modello, Ho anche aggiunto alcuni stili di base per il tavolo, usando il Al di fuori del modello, ci sono due Ogni Al momento, tutto quello che puoi vedere nella pagina sono le stringhe di testo contenute negli span, quindi dobbiamo aggiungere anche qualche JavaScript. Usando Javascript, inseriamo la tabella dall'interno del modello in entrambe le div come albero DOM ombra. Dopo l'inserimento, gli span vengono posizionati nei rispettivi slot all'interno della tabella e visualizzano i titoli delle colonne o i valori delle celle desiderati. Il risultato sarà due tabelle generate automaticamente che usano lo stesso modello. Per prima cosa, dobbiamo controllare se Shadow DOM è supportato nel browser dell'utente. Il Creiamo una variabile personalizzata chiamata Dentro il Ci sono Due Quindi, noi aggiungi una copia del contenuto del modello all'albero DOM ombra utilizzando il E le nostre tabelle HTML dinamiche sono pronte, ecco come appare l'output in Chrome:, c'è un
bene usa come un progetto per creando alcune tabelle che verrà aggiunto a un documento. Ci sono
elementi all'interno delle celle della tabella ( e ) agire come segnaposto per i titoli delle colonne e i valori delle celle. Ogni slot ha un unico nome
attribuilo lo identifica.
etichetta.
, per due tabelle separate che vogliamo aggiungere alla pagina.
l'elemento ha un
fessura
attributo di quale valore è uguale al nome
valore del loro corrispondente
tag dentro .
Allegare l'albero DOM ombra
attachShadow ()
metodo allega un albero DOM ombra ad un elemento e restituisce il nodo radice di tale albero DOM ombra. Il Se
condizione nel codice sotto controlla se il browser supporta questo metodo testando se i div sulla pagina hanno il attachShadow
metodo. // controlla se Shadow DOM è supportato if ('attachShadow' in document.createElement ('div')) else console.warn ('attachShadow not supported');
templateContent
quello serve come riferimento al contenuto del modello. if ('attachShadow' in document.createElement ('div')) let templateContent = document.querySelector ('template'). content; let divs = document.querySelectorAll ('div'); divs.forEach (function (div) // inside loop); else console.warn ('attachShadow not supported');
per ciascuno
loop, c'è un albero DOM ombra allegato a ogni div (div.attachShadow (mode: 'open')
).modalità
opzioni per attachShadow
: Aperto
e chiuso
. Se chiuso
è stato scelto il nodo root dell'albero Shadow DOM diventerebbe inaccessibile agli elementi e agli oggetti DOM esterni.templateContent.cloneNode (vero)
metodo. if ('attachShadow' in document.createElement ('div')) let templateContent = document.querySelector ('template'). content; let divs = document.querySelectorAll ('div'); divs.forEach (function (div) div.attachShadow (mode: 'open'). appendChild (templateContent.cloneNode (true))); else console.warn ('attachShadow not supported');