Hay algunas cosas sobre las otras respuestas que están mal redactadas o tal vez un poco incorrectas.
FALSO (ish): los elementos HTML no estándar son "no permitidos", "ilegales" o "inválidos".
No necesariamente. Son "no conformes" . ¿Cual es la diferencia? Algo puede "no conformarse" y aún así ser "permitido". El W3C no enviará a la policía HTML a su hogar y lo llevará lejos.
El W3C dejó las cosas de esta manera por una razón. La conformidad y las especificaciones están definidas por una comunidad. Si tiene una comunidad más pequeña que consume HTML para fines más específicos y todos acuerdan algunos Elementos nuevos que necesitan para facilitar las cosas, pueden tener lo que el W3C denomina "otras especificaciones aplicables" . (Obviamente, esto es una gran simplificación, pero se entiende la idea)
Dicho esto, los validadores estrictos declararán que sus elementos no estándar son "inválidos". pero eso se debe a que el trabajo del validador es garantizar el cumplimiento de las especificaciones para las que está validando, no garantizar la "legalidad" para el navegador o para su uso .
FALSO (más o menos): elementos HTML no estándar serán dar lugar a problemas de representación
Posiblemente, pero poco probable. (reemplace "will" con "might"). La única forma en que esto debería dar lugar a un problema de representación es si su elemento personalizado entra en conflicto con otra especificación, como un cambio en la especificación HTML u otra especificación respetada dentro del mismo sistema (como SVG, Matemáticas o algo personalizado).
De hecho, la razón por la que CSS puede diseñar etiquetas no estándar es porque la especificación HTML establece claramente que:
Los agentes de usuario deben tratar los elementos y atributos que no entienden como semánticamente neutros; dejándolos en el DOM (para procesadores DOM) y diseñándolos de acuerdo con CSS (para procesadores CSS), pero sin inferir ningún significado de ellos
Nota: si desea usar una etiqueta personalizada, solo recuerde que un cambio en la especificación HTML en un momento posterior podría volar su estilo, así que prepárese. Sin <imsocool>
embargo, es realmente poco probable que el W3C implemente la etiqueta.
Etiquetas no estándar y JavaScript (a través del DOM)
La razón por la que puede acceder y modificar elementos personalizados usando JavaScript es porque la especificación incluso habla de cómo deben manejarse en el DOM , que es la API (realmente horrible) que le permite manipular los elementos en su página.
La interfaz HTMLUnknownElement debe usarse para elementos HTML que no están definidos por esta especificación (u otras especificaciones aplicables).
TL; DR: La conformidad con la especificación se realiza con fines de comunicación y seguridad. La no conformidad todavía está permitida por todo excepto un validador , cuyo único propósito es hacer cumplir la conformidad, pero cuyo uso es opcional.
Por ejemplo:
var wee = document.createElement('wee');
console.log(wee.toString()); //[object HTMLUnknownElement]
(Estoy seguro de que esto atraerá llamas, pero ahí están mis 2 centavos)