是否可以在不使用短划线的情况下为自己的自定义元素<date>
,<person>
,<city>
或其他人命名?没有它们可以使用define元素吗?
答案 0 :(得分:61)
所有浏览器都支持HTML元素的有限列表,这些元素被视为“已知”。未知的元素(例如<city>
,<person>
)通常不会在现代浏览器中使用HTML解析器抛出错误,而是从HTMLUnknownElement
继承。然而,在IE的旧版本中,这些元素将作为空节点插入DOM而没有任何子节点(1)。
所有自定义元素在名称中包含连字符(-
)的Custom Elements规范requires。因此,您应使用<person>
或<my-person>
而不是<x-person>
。这些是有效的名称,而<person
&gt;被认为是一个未知元素。
破折号有效地允许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>
元素上的info更多。
(1)这引起了开发人员使用JavaScript在IE中创建虚拟HTML5标记(例如<article>
)的黑客攻击,以便他们可以使用CSS为任何普通元素设置样式。 / em>的