【发布时间】:2022-01-10 19:01:29
【问题描述】:
我想知道您是否可以使用随机字母作为 html 标记。就像, f 不是标签,但我在一些代码中尝试过它,它就像一个跨度标签一样工作。对不起,如果这是一个不好的问题,我只是好奇了一段时间,我在网上找不到任何东西。
【问题讨论】:
我想知道您是否可以使用随机字母作为 html 标记。就像, f 不是标签,但我在一些代码中尝试过它,它就像一个跨度标签一样工作。对不起,如果这是一个不好的问题,我只是好奇了一段时间,我在网上找不到任何东西。
【问题讨论】:
我想知道您是否可以使用随机字母作为 html 标记。
是和不是。
“是”- 它可以工作,但它不是正确:当你有类似<z> 的东西时,它只能工作,因为网络(HTML+ CSS+JS) 具有一定程度的 向前兼容性 内置:浏览器将呈现它们无法识别的 HTML 元素,基本上与 <span> 相同(即 inline 元素无法识别)除了reify 文档的文本范围之外,不要做任何事情。
但是,to use HTML5 Custom Elements correctly 您需要遵守自定义元素规范,其中规定:
自定义元素的名称必须包含破折号 (-)。所以
<x-tags>、<my-element>和<my-awesome-app>都是有效名称,而<tabs>和<foo_bar>则不是。这个要求是为了让 HTML 解析器可以将自定义元素与常规元素区分开来。它还确保了向 HTML 添加新标签时的前向兼容性。
所以,如果你使用<my-z>,那么你会没事的。
The HTML Living Standard document, as of 2021-12-04,确实在其自定义元素名称的要求列表中明确引用了前向兼容性:
https://html.spec.whatwg.org/#valid-custom-element-name
- 它们以 ASCII 低 alpha 开头,确保 HTML 解析器将它们视为标签而不是文本。
- 它们不包含任何 ASCII 大写字母,确保用户代理始终可以不区分 ASCII 大小写的方式处理 HTML 元素。
- 它们包含一个连字符,用于命名空间和确保向前兼容性(因为将来不会向 HTML、SVG 或 MathML 添加带有连字符的本地名称的元素)。
- 它们始终可以使用
createElement()和createElementNS()创建,它们的限制超出了解析器的限制。- 除了这些限制之外,还允许使用多种名称,以便为
<math-α>或<emotion-?>等用例提供最大的灵活性。
所以,举个例子:
<a>, <q>, <b>, <i>, <u>, <p>, <s>
<z>
- 的元素名称不能是自定义元素,并且将被当今的浏览器解释为无效/无法识别的标记,但它们将(很大程度上)视为相同<span> 元素。<a:z>
<-z>
a 到 z 的小写 ASCII 字符开头,因此不允许使用 -。<a-z>
<a-> 和 <a-->
[a-z] (PCENChar)* '-' (PCENChar)*。
* 表示“零个或多个”,这很奇怪,因为这意味着连字符不需要后跟另一个字符。PCENChar 代表元素名称中允许的大量可见字符,奇怪的是这包括 -,因此根据该规则 <a--> 应该是有效的。
-- 是更大的 SGML 系列(包括 HTML 和 XML)中的保留字符序列,可能会导致奇怪。 YMMV!【讨论】: