为什么HTML中没有关闭<img/>标记?

时间:2014-05-27 13:27:41

标签: html html5 image xhtml

为了好奇,为什么&lt; img &gt;标签未在 HTML 中关闭?

<img src="smiley.gif" alt="Smiley face" height="42" width="42">

我还注意到&lt; img &gt;标签在 XHTML ...

中明确关闭
<img src="smiley.gif" alt="Smiley face" height="42" width="42"/>

W3Schools: Image Tag

5 个答案:

答案 0 :(得分:33)

历史上,HTML一直基于SGML,允许在某些条件下省略标记。

由于<img>元素不能包含任何子节点,因此它被定义为EMPTY并且禁止结束标记(因为它没有用处)。

XHTML是用XML表示的HTML,XML不支持可选或禁止的标签(虽然它允许自动关闭标签替代开始+结束标签对),因此必须在那里明确关闭。

HTML 5向后兼容基于SGML的HTML版本。

答案 1 :(得分:17)

<img>标记表示所谓的 void element (请参阅HTML5 spec),因为它不能包含任何内容(与{{3}}不同1}}或<a>)。因此,没有语法上的理由说明为什么它需要在HTML中关闭。

然而,

XHTML基于XML,每个标签都需要关闭。

答案 2 :(得分:3)

这就是所谓的void元素,它只意味着元素必须没有任何内容(但可以有属性。)HTML5规范对虚空元素有这样的说法:

  

如果元素是空元素之一,或者元素是外来元素,则可能是单个&#34; /&#34; (U + 002F)字符。 此字符对空白元素没有影响

所以没有真正的理由让单身&#34; /&#34; (U + 002F)字符,但如果包含它,它不会破坏任何内容。

答案 3 :(得分:2)

<img>标记基本上是一个Void元素。

为了您的理解:

图片没有任何内容。图像标记将只提供通过src属性加载资源的路径。因此,它不需要任何结束元素。

<img src="smiley.gif" alt="Smiley face" height="42" width="42"/>,此代码适用于XHTML版本。

答案 4 :(得分:-1)

您不会像在h1中那样在图像中放置任何内容,而在图像中则不会放置任何内容。

示例:

<h1>hi</h1>
<img src=blblb alt=blbl/>