Ci sono alcune cose sulle altre risposte che sono solo poco formulate o forse un po 'errate.
Falso (ish): gli elementi HTML non standard non sono "consentiti", "illegali" o "non validi".
Non necessariamente. Loro sono "non conforme". Qual è la differenza? Qualcosa può "non conformarsi" ed essere comunque "consentito". Il W3C non manderà la polizia HTML a casa tua e ti porterà via.
Il W3C ha lasciato le cose in questo modo per un motivo. La conformità e le specifiche sono definite da una comunità. Se ti capita di avere una comunità più piccola che consuma HTML per scopi più specifici e tutti sono d'accordo su alcuni nuovi elementi di cui hanno bisogno per rendere le cose più facili, possono avere ciò che il W3C si riferisce "Altre specifiche applicabili". (Questo è un lordo rispetto alla semplificazione, ovviamente, ma hai l'idea)
Detto questo, i severi validatori dichiaranno che i tuoi elementi non standard non siano "non validi". Ma questo perché il compito del validatore è quello di garantire la conformità a qualsiasi specifica per la convalida, non per garantire la "legalità" per il browser o per uso.
Falso (ish): elementi HTML non standard volere provocare problemi di rendering
Forse, ma improbabile. (Sostituisci "Will" con "Might") L'unico modo in cui ciò dovrebbe comportare un problema di rendering è se l'elemento personalizzato è in conflitto con un'altra specifica, come una modifica alle specifiche HTML o un'altra specifica onorata all'interno dello stesso sistema (come SVG, matematica o qualcosa di personalizzato).
Infatti, Il motivo per cui CSS può modellare tag non standard è perché la specifica HTML chiaramente afferma Quello:
Gli agenti utente devono trattare elementi e attributi che non comprendono come semanticamente neutrali; Lasciandoli nel DOM (per i processori DOM) e lo styling secondo CSS (per i processori CSS), ma non infinire alcun significato da loro
Nota: Se vuoi utilizzare un tag personalizzato, ricorda solo una modifica alle specifiche HTML in un secondo momento, potrebbe far esplodere lo stile, quindi preparati. È davvero improbabile che il W3C implegerà il <imsocool>
tag, tuttavia.
Tag non standard e JavaScript (tramite il DOM)
Il motivo per cui è possibile accedere e modificare elementi personalizzati usando JavaScript è perché il le specifiche parlano anche di come dovrebbero essere gestite nel DOM, che è l'API (davvero orribile) che ti consente di manipolare gli elementi sulla tua pagina.
L'interfaccia HTMLunkNownElement deve essere utilizzata per elementi HTML che non sono definiti da questa specifica (o altre specifiche applicabili).
TL; DR: conforme alle specifiche viene eseguito a fini di comunicazione e sicurezza. La non conformità è ancora consentita da tutto tranne che a validatore, il cui unico scopo è far rispettare la conformità, ma il cui uso è facoltativo.
Per esempio:
var wee = document.createElement('wee');
console.log(wee.toString()); //[object HTMLUnknownElement]
(Sono sicuro che questo disegnerà fiamme, ma ci sono i miei 2 centesimi)