Ответ 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.