自定义元素的名称是否需要短划线?

add*_*dyo 40 web-component x-tag polymer

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

add*_*dyo 68

所有浏览器都支持有限的HTML元素列表,这些元素被认为是"已知的".元件,其未知的(例如<city>,<person>)一般不会引发错误,在现代浏览器的HTML解析器和代替继承HTMLUnknownElement.然而,在IE的旧版本中,这些元素将作为空节点插入DOM而没有任何子节点(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和其他规范的保留名称.例如,这里有关于元素的更多信息<font-face>.

(1)这导致了开发者在IE中<article>使用JavaScript 在IE(例如)中创建虚拟HTML5标记的黑客攻击,以便他们可以使用CSS为任何普通元素设置样式.

  • 自定义元素名称是否可以包含两个破折号,例如 my-custom-element? (4认同)
  • 请记住,即使您不应该创建名称中没有破折号的新元素,但如果您这样做,它仍然可以在所有现代浏览器中完美运行。 (3认同)
  • @MatthewDean 自定义元素不能以连字符开头...但它可以以连字符结尾!所以这是不允许的:`&lt;-comp&gt;&lt;/-comp&gt;`,但是这是允许的:`&lt;comp-&gt;&lt;/comp-&gt;` (3认同)
  • “必须包含连字符”是否意味着自定义元素可以以连字符开头?有人知道吗? (2认同)
  • 我希望在我花了 2 个小时用头撞墙试图让聚合物发挥作用之前知道这一点。这应该贴在任何文档的首页,甚至与自定义元素密切相关。Chrome/FF/Safari 没有抛出任何错误,甚至在 DOM 树中显示元素,但拒绝呈现内部 html。可怕的行为。 (2认同)
  • @yglodt 是的,自定义元素可以包含多个破折号。 (2认同)