Подтвердить что ты не робот

У пользовательских элементов требуется тире в их имени?

Можно ли назвать свои собственные элементы <date>, <person>, <city> или другие без использования тире? Можете использовать элементы без них?

4b9b3361

Ответ 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: они работают нормально, но не используют их.