Benötigen benutzerdefinierte Elemente einen Bindestrich in ihrem Namen?

Lesezeit: 2 Minuten

Benutzeravatar von addyo
addyo

Ist es möglich, Ihre eigenen benutzerdefinierten Elemente zu benennen? <date>, <person>, <city> oder andere ohne die Verwendung eines Bindestrichs? Kann man definierte Elemente ohne sie verwenden?

Benutzeravatar von addyo
addyo

Alle Browser unterstützen eine endliche Liste von HTML-Elementen, die als “bekannt” gelten. Unbekannte Elemente (z <city>, <person>) geben in modernen Browsern im Allgemeinen keine Fehler mit dem HTML-Parser aus und erben stattdessen von HTMLUnknownElement. In älteren IE-Versionen wurden solche Elemente jedoch als leerer Knoten ohne untergeordnete Elemente in das DOM eingefügt (1).

Der Benutzerdefinierte Elemente Spezifikation erfordert dass alle benutzerdefinierten Elemente einen Bindestrich (-) im Namen. Also eher als <person>würden Sie verwenden <my-person> oder <x-person>. Dies sind gültige Namen, während <person> gilt als unbekanntes Element.

Der Bindestrich ermöglicht es dem HTML-Parser effektiv, den Unterschied zwischen echten benutzerdefinierten Elementen und regulären Elementen zu erkennen. Es ermöglicht uns auch, ein Maß an Zukunftsfähigkeit zu ermöglichen, wenn Standardgruppen neue Tags zu HTML hinzufügen.

Sie können jeden durch Bindestrich getrennten Namen verwenden, mit Ausnahme von:

  • annotation-xml
  • color-profile
  • font-face
  • font-face-src
  • font-face-uri
  • font-face-format
  • font-face-name
  • missing-glyph

Nach meinem besten Wissen sind diese Namen reservierte Namen von SVG, MathML und anderen Spezifikationen. Hier zum Beispiel mehr die Info auf der <font-face> Element.

(1) Dies führte zu dem Hack, bei dem Entwickler ein Dummy-HTML5-Tag im IE erstellten (z <article>) mit JavaScript, damit sie es dann mit CSS nach jedem normalen Element gestalten konnten.

  • Bedeutet „muss einen Bindestrich enthalten“, dass ein benutzerdefiniertes Element mit einem Bindestrich beginnen kann? Weiß jemand?

    – Matthew Dekan

    1. Mai 2015 um 20:47 Uhr

  • Ich wünschte, ich wüsste das, bevor ich 2 Stunden damit verbracht habe, meinen Kopf gegen eine Wand zu schlagen, um Polymer zum Laufen zu bringen. Dies sollte auf der gesamten Titelseite aller Dokumente verputzt werden, auch wenn es eng mit benutzerdefinierten Elementen zusammenhängt. Chrome/FF/Safari geben keine Fehler aus und zeigen das Element sogar im DOM-Baum an, weigern sich jedoch, das innere HTML zu rendern. Schreckliches Verhalten.

    – Tyguy7

    6. Februar 2016 um 5:48 Uhr

  • Kann der Name eines benutzerdefinierten Elements zwei Bindestriche enthalten, z. B. my-custom-element?

    – yglodt

    1. August 2016 um 21:20 Uhr

  • Denken Sie daran, dass, obwohl Sie keine neuen Elemente ohne einen Bindestrich im Namen erstellen sollten, es dennoch in allen modernen Browsern einwandfrei funktioniert, wenn Sie dies tun.

    – Gawin

    31. März 2020 um 13:20 Uhr

  • @MatthewDean Ein benutzerdefiniertes Element KANN NICHT mit einem Bindestrich beginnen … aber es kann mit einem Bindestrich enden! Das ist also nicht erlaubt: <-comp></-comp>aber das ist erlaubt: <comp-></comp->

    – Dalin

    17. Juni 2022 um 22:13 Uhr

1445970cookie-checkBenötigen benutzerdefinierte Elemente einen Bindestrich in ihrem Namen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy