Можно ли назвать свои собственные элементы <date>, <person>, <city> или другие без использования тире? Можете использовать элементы без них?
У пользовательских элементов требуется тире в их имени?
Ответ 1
Все браузеры поддерживают конечный список элементов HTML, которые считаются "известными". Неизвестные элементы (например, <city>, <person>) обычно не вызывают ошибок с парсером HTML в современных браузерах и вместо этого наследуют от HTMLUnknownElement. Однако в более старых версиях IE такие элементы будут вставлены в DOM как пустой node без каких-либо дочерних элементов (1).
Пользовательские элементы требует, чтобы все пользовательские элементы содержали дефис (-) в имя. Поэтому вместо <person> используйте <my-person> или <x-person>. Это допустимые имена, а <person > считается неизвестным элементом.
Черточка эффективно позволяет анализатору HTML различать истинные пользовательские элементы и регулярные элементы. Это также позволяет нам обеспечить уровень будущих возможностей, когда группы стандартов добавляют в HTML новые теги.
Вы можете использовать любое дешифрованное имя, за исключением:
-
annotation-xml -
color-profile -
font-face -
font-face-src -
font-face-uri -
font-face-format -
font-face-name -
missing-glyph
Насколько я знаю, эти имена являются зарезервированными именами из SVG, MathML и других спецификаций. Например, здесь больше info в элементе <font-face>.
(1) Это привело к взлому, когда разработчики создавали фиктивный тег HTML5 в IE (например, <article>) с использованием JavaScript, чтобы затем стирать его для любого нормального элемента с помощью CSS.
Ответ 2
Технически, они действительно работают. Вы можете также стилизовать их и все такое. То, что вы НЕ можете сделать, это доверять им. Это помогает решению. Не используйте их в проекте, который имеет значение и будет жить достаточно долго, чтобы потерпеть неудачу, когда браузер решит строго соблюдать его.
Опять же, это не значит, что они "плохие". Возможно, в будущем они будут абсолютно понятны или даже станут принятыми стандартами, как <section> в HTML5. Тег, подобный <city> , абсолютно значим, поэтому он практически доходит до того, что (и когда) такие вещи входят в официальные спецификации.
TL;DR: они работают нормально, но не используют их.