这个问题听起来很奇怪,我现在将解释一切。
看,你可以写出标准定义的标签,例如:<html>
, <head>
, <body>
, <div>
, <table>
,<span>
等。
但原则上,您可以编写自己的标准未定义的标签,例如:<screen>
、、<display>
等<place>
。
但是,我们不能在“我们的”标签中使用任何字符,例如:
<0car>
, <-car>
, <машина>
- 所有这些都将由浏览器处理,如下所示:"<твой_тег>"<!--твой_тег-->
但是回到正确接受标签的示例,您也可以写<screen100>
or <car->
or <car-моя>
- 没有错误,浏览器在其 DOM 树中正确显示它们。
我想找到阐明我的示例行为的规则
从我搜索此https://html.spec.whatwg.org的资源中
但是,不清楚为什么第二段没有完全描述第一个字符应该是什么,以及后续的那些https://html.spec.whatwg.org/multipage/syntax.html#start-tags 但在第二段落我们看到了一个链接,它把我们带到了下面的段落:
标签包含标签名称,给出元素的名称。HTML 元素都有只使用 ASCII 字母数字的名称。在 HTML 语法中,标签名称,甚至是外来元素的标签名称,可以用任何大小写字母组合编写,当转换为全小写时,匹配元素的标签名称;标签名称不区分大小写。
标签包含一个标签名称,它为元素提供名称。所有 HTML 元素的名称都只使用 ASCII 字母数字字符。在 HTML 语法中,标签名称,即使是用于外来元素的标签名称,也可以用小写和大写字母的任意组合编写,当转换为全小写时,与元素的标签名称匹配;标签名称不区分大小写。
但是您还记得,我给出的示例不仅包含ASCII alphanumerics,我应该如何理解这一点?
规格说明如下:
<машина>
你的标签变成了南瓜。/
、感叹号和>
. 自然,不会对所有后续字符施加其他特殊限制。因为您看到标签<car-моя>
的处理没有错误。在 HTML 元素的进一步定义中,我们读到它只能由 ASCII 字母和数字组成。在同一段落中,我们读到还有其他元素,从文本中可以理解,它们遵循自己的一些规则。引用:
注意 may 的使用,表示 may、not shall、must。一种其他元素是自定义元素。对于他们,您可以找到对所用字符限制的更具体描述:
西里尔字母位于 U+0400–U+04FF 范围内,正如您所看到的,它包含在允许的范围内。
因为,是的:除了第一个字符的情况外,您可以在任何地方的标签名称中使用西里尔字母。
[a-z]
严格来说,标签名称的第一个字符必须来自 range 。所以毫无疑问,文档给出了一个例子:
这句话清楚明确地表明您可以使用
<math-α>
或之类的标签<emotion-😍>
。恐怕您正在寻找的东西没有写在任何地方:众所周知,浏览器可以容忍并尝试解释各种损坏的标记。
这是浏览器引擎的工作(我建议你在不同的引擎中尝试你的标签:IE8/9/11 Edge Safari FireFox Chromium)并比较结果。 在这里很容易做到
最近我一直在纠结是否可以放在
<meta>
外面<head>
,<body>
但事实证明不是,但大多数浏览器引擎都会理解我犯了一个错误并<meta>
转向<head>
在这里阅读更多。