出于好奇,为什么在HTML中<img>标签没有关闭?
<img src="smiley.gif" alt="Smiley face" height="42" width="42">
我也注意到在XHTML中,<img>标签是明确关闭的...
<img src="smiley.gif" alt="Smiley face" height="42" width="42"/>
W3Schools:图像标签
从历史上看,HTML 基于 SGML(标准通用标记语言),在某些情况下允许省略标签。
<img>
元素不能有任何子节点,因此被定义为 EMPTY 元素,禁止使用结束标签(因为它没有作用)。
XHTML 是 XML 表示的 HTML,而 XML 不支持可选或禁止的标签(尽管它允许一个自闭合标签替代一个起始+结束标签对),因此必须在那里显式关闭。
HTML 5 向后兼容基于 SGML 的 HTML 版本。
<img>
标签最初是以一种快速而粗略的方式定义和实现的,后来被正式(仅仅是正式)改进为SGML语法。HTML的任何真正的实现都不是基于SGML的。 - Jukka K. Korpela<img src="http://www.mozilla.org/images/mozilla-banner.gif"></img>
,没有错误?也许 Chrome 只是忽略了 </img>
? - Tina Chen<img>
标签代表一个被称为空元素(参见HTML5规范)的元素,因为它不能有任何内容(与<a>
或<div>
等不同)。因此,在HTML中它没有语法上的需要被闭合。<img>
标签基本上是一个Void元素。
为了您的理解:
图片没有任何内容。 图像标签只会通过src属性提供从哪里加载资源的路径。因此,它不需要任何结束元素。
而<img src="smiley.gif" alt="Smiley face" height="42" width="42"/>
,这段代码是用于XHTML版本的。
在图像中,你不会像在 h1
中放置文本一样放置任何内容。
例如:
<h1>hi</h1>
<img src=blblb alt=blbl/>
<p>text1<p>text2<p>text3
应该创建3个段落,但大多数浏览器会假设每个<p>
标签在下一个开始时关闭,尽管它有一个常用的关闭标签。标准说这是可以接受的行为。 - scragaraudio
和video
不是空元素,因为它们可以包含回退元素。如果你不小心的话,这会导致奇怪的布局故障。 - Sam Dutton