为什么有些 HTML 标记没有闭合标记

少即是多:了解 HTML 中的 void  元素

作为 web 开发人员,我们经常使用(或曾经使用) HTML 进行编码。在 HTML 中,你会看到一些元素有一个结束标记:

<div></div>

但有些却没有:

<br>

<br />

这是为什么呢?让我们一探究竟。

在最佳来源中搜索–非闭合标记

没有闭合标记的元素称为 void 元素。

我们将在 HTML 规范中寻找知识:

 void 元素只有起始标记; void 元素不得指定结束标记。

[…]

void 元素不能有任何内容(因为没有结束标记,所以不能在开始标记和结束标记之间添加任何内容)。

这就回答了你的问题: void 元素没有任何内容。从技术上讲,我可以在这里结束它,但是

我们是否应该在 void 元素中添加 /

我们应该选择哪一个:

<br>

还是

<br />

网上对此有很多讨论–有人加斜线,有人不加。

文档里又是怎么说的?

[……]可能有一个 U+002F SOLIDUS 字符 (/),它在外来(foreign)元素上将起始标记标记为自闭。在 void 元素上,它不会将起始标记标记为自闭,而是没有必要,也没有任何作用。对于这种 void 元素,只有在谨慎的情况下才能使用该字符,特别是因为如果前面直接出现一个未引用的属性值,该字符就会成为属性值的一部分,而不会被解析器丢弃。

(上下文:外来元素是指来自 SVG 或 MathML 命名空间的元素)。

根据规范:试用斜线在 void 标记中是完全可选的,没有任何影响,但以后可能会引起问题。

什么问题?如前所述,如果在编写 HTML 属性时不使用引号,那么解析器可能会将斜线解释为属性的一部分,而不是标记的结尾。

为什么首先要有斜线?为了向后兼容。

目前使用的 HTML 版本是 HTML5,但您的文档也可以以其他模式呈现。

曾经有一种名为 XHTML 的标准–HTML 和 XML 的混合体。

在该标准中,这些斜线是强制性的。如果缺少了斜线,XHTML 解析器就无法区分该标记是关闭了还是缺少了一个关闭标记。

最终结论

这可能会让人失望,但……想怎么用就怎么用吧!

如果在编写 HTML 属性时不使用引号,那么省略斜线将是更安全的选择。

然而,对于某些人来说,不写斜线可以节省时间。但它清楚地标记了标记的结束。

就我个人而言,我喜欢第二种选择。

结束语

感谢您的阅读,希望您能有所收获。这篇文章我写得很快,但必须找到很多数据。

有一个小趣闻,我可以告诉你,<p> 标记过去是 void 的,因为它表示段落之间的空格,而不是段落本身。

本文文字及图片出自 When less is more: Understanding void elements in HTML.

阅读余下内容
 

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注


京ICP备12002735号