空元素

空元素是 HTML 中不能有任何子节点(即嵌套元素或文本节点)的元素。空元素只有开始标签;空元素绝不能指定结束标签。

在 HTML 中,空元素不能有结束标签。例如,<input type="text"></input> 是无效的 HTML。相反,不能有任何子节点的 SVG 或 MathML 元素可以在其开始标签中使用结束标签,而不是 XML 自闭合标签语法。

HTMLSVGMathML 规范非常精确地定义了每个元素可以包含什么。因此,某些标签组合没有语义。

尽管无法将空元素标记为具有任何子元素,但可以使用 JavaScript 以编程方式在 DOM 中将子节点添加到元素中。但这并不是一个好的做法,因为结果将不可靠。

HTML 中的空元素如下:

自闭合标签

HTML 中不存在自闭合标签(<tag />)。

如果 HTML 元素的开始标签中存在尾随的 /(斜杠)字符,HTML 解析器会忽略该斜杠字符。对于需要结束标签的元素(例如 <script><ul>),记住这一点尤为重要。在这些情况下,在开始标签中添加尾随斜杠不会关闭元素。相反,尾随斜杠被忽略,元素被视为打开,直到遇到显式关闭标签,或者直到解析器根据 HTML 结构和解析规则隐式关闭元素。例如,在 <div/>Some text 的情况下,浏览器将其解释为 <div>Some text</div>,将斜杠视为被忽略,并认为 div 元素包含后面的文本。

然而,一些代码格式化工具会在空元素的开始标签中添加尾随斜杠字符,以使其兼容 XHTML 并更具可读性。例如,一些代码格式化工具会将 <input type="text"> 转换为 <input type="text" />

XMLXHTMLSVG 中的空元素需要自闭合标签(例如,<circle cx="50" cy="50" r="50" />)。

在 SVG 和 MathML 中,不允许有任何子节点的元素可以被标记为自闭合。在这种情况下,如果元素的开始标签被标记为自闭合,则该元素绝不能有结束标签。

注意:如果开始标签中的尾随 /(斜杠)字符直接位于未加引号的属性值之后——中间没有空格——则斜杠将成为属性值的一部分,而不是被解析器丢弃。例如,标记 <img src=http://www.example.com/logo.svg/> 会导致 src 属性的值为 http://www.example.com/logo.svg/——这会使 URL 错误。

另见