不需要结束标签的标记叫什么?

64

有些HTML标签,比如<img /><input /><button />,它们不需要结束标记(</img></input></button>)。这种类型的标签被称为什么?

答:这种类型的标签被称为“自闭合标签”(self-closing tag)或“空元素”(void element)。

16
<img />、<input />和<button />都不是HTML标签,它们是XHTML标签。HTML标签在结束符">"前从不包含/。永远不会。 - Tom Anderson
@Tom Anderson:更糟糕的是,根据上下文,这确实是有效的HTML语法,但它并不意味着人们通常认为的那样。 - Jörg W Mittag
6
@Tom Anderson。是的,在HTML5中,'/'在空元素上是可选的但是有效的。img和input是空元素,因此在这里使用'/'是有效的。button不是空元素,因此不可用。此外,在SVG和MathML元素上,'/'会使元素像XML一样自闭合。请参阅http://dev.w3.org/html5/spec/syntax.html#start-tags。 - Alohci
1
@Alohci:我忘记了HTML5,我的错误。请将“HTML”更改为“HTML 5之前的版本”。 :) - Tom Anderson
2
@Tom Anderson:是的,但有许多基于SGML的HTML验证器,这可能会导致花费很多时间盯着标记、盯着Firebug和盯着验证器消息,想知道为什么同一个文件有三种完全不同的解释。 - Jörg W Mittag
显示剩余5条评论
13个回答

74
这种语法有多种名称,具体取决于所使用的语言。查看特定语言的规范可以找到其称呼。
HTML 4.x规范中没有提到这种语法,因此它不是有效的语法。
在HTML 5规范中,“/”字符(称为SOLIDUS)对于void元素<br /><hr /><img /><input />等没有影响,并且对于foreign元素(例如SVG标签),它指定了一个被标记为自闭合的开始标签。对于所有其他标签(例如你问题中提到的<button />),它不是有效的语法。
引用如下:
如果该元素是void元素之一,或者该元素是foreign元素,则可能存在单个U+002F SOLIDUS字符(/)。这个字符对于void元素没有影响,但对于foreign元素,它标记了开始标签为自闭合
XML中也可以使用这种语法。
根据XML 规范,它被称为空元素标签

空元素的表示形式可以是立即后跟结束标记的开始标记,也可以是空元素标签

XHTML 根据XHTML 规范,它被称为空元素的最小化标签语法

C.2. 空元素

在空元素结尾的 / 和 > 之前包含一个空格,例如 <br />、<hr /> 和 <img src="karen.jpg" alt="Karen" />。同时,对于空元素使用最小化标签语法,例如 <br />,因为 XML 允许的 <br></br> 的另一种语法会导致许多现有用户代理产生不确定的结果。

C.3. 元素最小化和空元素内容

对于内容模型不为空的元素的空实例(例如,一个空标题或段落),不要使用最小化形式(例如,使用 <p> </p> 而不是 <p />)。

一般而言,如果您想要更加准确,请使用相应标准中定义的名称。这样,如果其他人不确定您所说的内容,他们可以查阅标准以了解详情。但是,如果您不想使用标准中的名称,您可以自由地选择其他名称。重要的是与您交流的人能够理解您的意思。即使标准正式称其为其他名称,在XML文档中,如果您使用“自关闭标签”这个术语,我认为没有人会误解您。感谢 Alohci 提供的HTML5参考资料。

10
毫无疑问,这是正确的答案,但重要的是,在实际应用中,我认识的几乎所有人都称它们为“自闭合”标签。 - Dan Diplo

31
该术语是“自闭合”的。

也许你已经知道了,自闭合标签和空元素(比如<br />)有什么区别?可以查看这个维基页面(http://en.wikipedia.org/wiki/HTML_element)。 - Tim
听起来没错。还有一个问题。需要一个闭合标签的标签术语是什么?常规标签? - Emanuil Rusev
@Tim 自闭合标签和“空元素”是同一回事。 - Alex McBride
1
@Emanuil - 我想我会称其为开标签,或者按其名称称呼,例如锚点标签或span标签。正如@Mark Byers所建议的那样,重要的是人们理解你在谈论什么。我认为开/闭标签和自闭合标签都被广泛使用。在交谈中,我不喜欢过于学究,但你确实应该确保你的标记对于你使用的任何文档类型都是合法的。就我个人而言,我通常编写XHTML。 - tvanfosson

6

HTML标签可以分为两种类型。它们是:

  1. 成对标签

  2. 单独标签

成对标签:

如果文本被放置在标签和其伴侣标签之间,则称该标签为成对标签。在成对标签中,第一个标签称为开标签,第二个标签称为闭标签。

例如: <i>这段文字是斜体字。</i>

注意:这里的<i>被称为开标签,而</i>被称为闭标签。

单独标签:

单独标签没有伴侣标签。单独标签也称为单一或独立标签。

例如:<br>,<hr>等。这些标签不需要任何伴侣标签。


2
我一直称它们为单例标签!

2
那些标签被称为“独立标签”。独立标签在HTML中没有闭合标签。
但是在XHTML中,它们必须通过在结束角括号之前添加正斜杠来自我关闭。

2

p, li 等可选的闭合标签。

值得一提的是,除了问题中提到的几个标签外,还有几个标签不需要闭合标签:当标准中指定的内容出现时,它们会自动关闭。

例如:

<body>
<p>abc
<p>def
</body>

等同于:

<body>
<p>abc
</p>
<p>def
</p>
</body>

由于 p 标签在以下情况下都会关闭:

  • 另一个 p 开始时
  • p 的父元素关闭时

这在 12.1.2.4 "Optional tags" 中有详细说明:https://html.spec.whatwg.org/multipage/syntax.html#optional-tags,但我认为除了 "具有可选结束标记的元素" 之外没有实际名称。

另请参阅:HTML中不需要P-end标签(</p>)


0

这被称为自闭合标签


2
你能提供这个的来源吗? - Clay Risser

0

HTML中有成对的标签和单独的标签

单独的标签是打开的,不需要关闭。它们是独立存在的。

<img />, <input /> and <button />

0

0
我把它们叫作自闭合标签、单标签和单音节标签,但我不知道为什么我没有采用一个单一的术语。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接