TL;DR:
没有有效的自定义HTML5标签。
我认为你可能指的是
Web应用工作组提出的
自定义元素工作草案,其中描述了以下内容:
自定义元素类型标识自定义元素接口,是一个字符序列,必须匹配NCName生产规则,必须包含U+002D HYPHEN-MINUS字符,并且不能包含任何大写ASCII字母。自定义元素类型不能是以下值之一:
- annotation-xml
- color-profile
- font-face
- font-face-src
- font-face-uri
- font-face-format
- font-face-name
- missing-glyph
此外,根据HTML5规范,
HTML标签名只能以ASCII字母开头。如果我们假设自定义元素提案没有对HTML语法规范提出任何更改,则以连字符减号字符开头的元素不是有效的HTML标签名。如果将自定义元素工作草案提案和HTML5语法规范所述结合起来,那么我们可以得出结论:
<-custom>
不是一个格式良好的HTML,因此不能成为有效的自定义元素,因为标签名不以ASCII字母开头。另一方面,
custom-
既是格式良好的HTML,也是有效的自定义元素。
请注意,
Custom Element是工作草案,而不是W3C建议。这意味着
自定义元素在HTML5中无效。也不要抱太大希望,许多在W3C中提出的工作草案从未被实现(原因也很充分,并非所有提案都是好的)。
<抱怨>个人希望这个提案被否决。我花了一些时间阅读这个提案,它看起来像是试图重新发明XML命名空间和SGML,而且可能忘记了HTML和语义Web的本意。无论如何,HTML5语法已经允许作者使用在HTML5规范中未指定的元素,我不认为有必要将如何创建自定义元素进一步标准化。我希望HTML5工作组中会有足够明智的人意识到这个提案有多糟糕,并投票反对此提案。保持HTML5不受作者定义的自定义修改的影响。</抱怨>
如果您想定义自己的自定义词汇表,我建议您使用XHTML5编写XML应用程序,该规范实际上说明了如何使用XML命名空间定义自己的自定义元素。与HTML不同,XML旨在具有可扩展性。
关于自定义数据属性的问题,这是
HTML5规范所说的:
引用:
自定义数据属性是没有命名空间的属性,其名称以字符串“data-”开头,在连字符后至少有一个字符,与XML兼容,并且不包含大写ASCII字母。
因此,以下是有效的data-*属性示例:
而这些则不是:
据我所知,自定义元素工作草案没有为自定义元素上的自定义属性指定任何附加的语法要求,也没有明确允许使用任意非data-*属性以及自定义属性如何与现有HTML属性交互,尽管我们可以合理推断允许自定义属性可能是该提案的意图。
关于你关于CSS的问题,是的,你理解得对,那些选择器是有效的CSS选择器,可以用来定位这些自定义元素。CSS可用于样式化任何元素,不仅限于HTML定义的元素,还包括其他标记语言如SVG、MathML以及使用XHTML时的任意XML词汇表。
CSS选择器规范实际上并不以任何实质性方式依赖于HTML词汇表(尽管在示例中大量使用HTML,因为它是大多数人最熟悉的)。正是由于这个原因,CSS选择器语法可以用于引用文档中的任何元素,包括没有在HTML规范中指定的自定义元素。在今天的所有主要浏览器中,样式化自定义标签已经可以工作了。您可以使用任意的标签名称,并使用您期望的选择器选择它们,CSS将按照您期望的方式对它们进行样式化。这不需要标签名称中有连字符。