Es gibt ein paar Dinge über die anderen Antworten, die entweder schlecht formuliert sind oder vielleicht ein wenig falsch sind.
FALSCH(ähnlich): Nicht-Standard-HTML-Elemente sind "nicht erlaubt", "illegal" oder "ungültig".
Nicht unbedingt. Sie sind "nicht konform". Was ist der Unterschied? Etwas kann "nicht konform" sein und trotzdem "erlaubt" sein. Das W3C wird nicht die HTML-Polizei zu Ihnen nach Hause schicken und Sie abführen.
Das W3C hat die Dinge aus einem Grund so gelassen. Konformität und Spezifikationen werden von einer Gemeinschaft definiert. Wenn Sie eine kleinere Gemeinschaft haben, die HTML für spezifischere Zwecke konsumiert und sie sich alle auf einige neue Elemente einigen, die sie benötigen, um die Dinge zu vereinfachen, können sie das haben, was das W3C als "andere anwendbare Spezifikationen" bezeichnet. (Das ist offensichtlich eine grobe Vereinfachung, aber Sie verstehen die Idee)
Das heißt, strenge Validatoren werden Ihre nicht-standardmäßigen Elemente als "ungültig" deklarieren. Aber das liegt daran, dass die Aufgabe des Validierers darin besteht, die Konformität mit der jeweiligen Spezifikation zu gewährleisten, nicht die "Legalität" für den Browser oder für die Verwendung zu gewährleisten.
FALSCH(ähnlich): Nicht-Standard-HTML-Elemente werden zu Darstellungsproblemen führen
Möglich, aber unwahrscheinlich. (ersetzen Sie "werden" durch "könnten") Der einzige Weg, wie dies zu einem Darstellungsproblem führen sollte, ist, wenn Ihr benutzerdefiniertes Element mit einer anderen Spezifikation in Konflikt gerät, z.B. mit einer Änderung an der HTML-Spezifikation oder einer anderen Spezifikation, die im selben System (wie SVG, Mathematik oder einer benutzerdefinierten Sache) eingehalten wird.
Tatsächlich, der Grund, warum CSS nicht standardmäßige Tags stilisieren kann, ist, weil die HTML-Spezifikation klar aussagt dass:
Benutzeragenten müssen Elemente und Attribute, die sie nicht verstehen, semantisch neutral behandeln; sie im DOM belassen (für DOM-Prozessoren) und sie entsprechend CSS stilisieren (für CSS-Prozessoren), aber keine Bedeutung aus ihnen ableiten
Hinweis: Wenn Sie einen benutzerdefinierten Tag verwenden möchten, merken Sie sich einfach, dass eine Änderung an der HTML-Spezifikation zu einem späteren Zeitpunkt Ihr Styling zerschießen kann, seien Sie also vorbereitet. Es ist wirklich unwahrscheinlich, dass das W3C den Tag implementieren wird.
Nicht-Standard-Tags und JavaScript (über das DOM)
Der Grund, warum Sie auf benutzerdefinierte Elemente über JavaScript zugreifen und sie ändern können, ist, dass die Spezifikation sogar darüber spricht, wie sie im DOM behandelt werden sollten, das ist die (wirklich schreckliche) API, die es Ihnen ermöglicht, die Elemente auf Ihrer Seite zu manipulieren.
Das HTMLUnknownElement-Interface muss für HTML-Elemente verwendet werden, die nicht durch diese Spezifikation definiert sind (oder andere anwendbare Spezifikationen).
Zusammenfassung: Die Konformität mit der Spezifikation dient Kommunikations- und Sicherheitszwecken. Nicht-Konformität ist von allem außer einem Validierer erlaubt, dessen einziger Zweck darin besteht, Konformität durchzusetzen, dessen Verwendung jedoch optional ist.
Zum Beispiel:
var wee = document.createElement('wee');
console.log(wee.toString()); //[object HTMLUnknownElement]
(Ich bin sicher, dass das Kritik auf sich ziehen wird, aber das sind meine 2 Cent)