小编典典

(非无效)自闭合标签在 HTML5 中有效吗?

all

W3C
验证器
维基百科)不喜欢非空元素上的自闭合标签(那些以“”结尾的标签/>
。(void 元素是那些可能不包含任何内容的元素。)它们在 HTML5
中仍然有效吗?

可接受 的void 元素的一些示例:

<br />
<img src="" />
<input type="text" name="username" />

被拒绝 的非空元素的一些示例:

<div id="myDiv" />
<span id="mySpan" />
<textarea id="someTextMessage" />

注意:
W3C 验证器实际上接受 void 自闭合标签:作者最初遇到问题是因为一个简单的拼写错误(\>而不是/>);但是,一般来说,自闭合标签在 HTML5
中并不是 100% 有效,并且答案详细说明了各种 HTML 风格的自闭合标签的问题。


阅读 115

收藏
2022-03-03

共1个答案

小编典典

  • (理论上)在 HTML 4 中,<foo /(是的,根本没有>)意味着<foo>(这导致了<br />意义<br>>(即<br>&gt;)和<title/hello/意义<title>hello</title>)。我使用“理论上”这个词是因为这是一个 SGML 规则,浏览器在支持方面做得很差。支持太少了(我只见过它在emacs-w3m中工作),规范建议作者避免使用 syntax

  • XHTML 中,<foo />表示<foo></foo>. 这是适用于所有 XML 文档的 XML规则。 也就是说,XHT​​ML 通常被用作text/html(至少在历史上)由浏览器使用与用作application/xhtml+xml. W3C为XHTML作为text/html. (本质上:仅当元素被定义为 EMPTY(并且 HTML 规范中禁止结束标记)时才使用自闭合标记语法)。

  • HTML5 中, 的含义<foo /> 取决于元素的类型

    • 在被指定为void 元素的 HTML 元素上(本质上是“在 HTML5 之前存在且被禁止包含任何内容的元素”),简单地禁止结束标记。开始标签末尾的斜线是允许的,但没有意义。对于沉迷于 XML 的人(和语法高亮者)来说,它只是语法糖。
    • 在其他 HTML 元素上,斜杠是一个错误,但错误恢复会导致浏览器忽略它并将该标记视为常规开始标记。这通常会以缺少结束标记而告终,从而导致后续元素成为子元素而不是兄弟元素。
    • 外部元素(从 SVG 等 XML 应用程序导入)将其视为自闭合语法。
2022-03-03