51

是否可以在不使用破折号的情况下命名您自己的自定义元素<date>,<person>或其他元素?<city>可以在没有它们的情况下使用定义元素吗?

4

1 回答 1

87

所有浏览器都支持有限的 HTML 元素列表,这些元素被认为是“已知的”。在现代浏览器中,未知元素(例如<city><person>)通常不会在 HTML 解析器中引发错误,而是从HTMLUnknownElement. 然而,在旧版本的 IE 中,这些元素将作为没有任何子节点的空节点插入 DOM (1)。

定义元素规范要求所有自定义元素-的名称中都包含连字符 ( )。因此<person>,您将使用<my-person>or而不是<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 和其他规范中的保留名称。例如,这里有关于元素的更多信息。<font-face>

(1) 这引起了黑客攻击,开发人员将<article>使用 JavaScript 在 IE(例如)中创建一个虚拟 HTML5 标签,以便他们可以使用 CSS 为任何普通元素设置样式。

于 2014-03-20T21:34:50.120 回答