如何正确关闭<img>标签?

ins*_*ere 113 html

<img src='stackoverflow.png'>
<img src='stackoverflow.png'></img>
<img src='stackoverflow.png' />
Run Code Online (Sandbox Code Playgroud)

哪一个是正确的?

Mar*_*abe 159

这个是有效的HTML5,没有关闭它绝对没问题.这是一个所谓的虚空元素:

<img src='stackoverflow.png'>
Run Code Online (Sandbox Code Playgroud)

以下是有效的XHTML标记.他们必须关闭.后者在HTML 5中也很好:

<img src='stackoverflow.png'></img>
<img src='stackoverflow.png' />
Run Code Online (Sandbox Code Playgroud)

  • 它不仅是有效的HTML5,而且在HTML4中也是有效的.正如你所说,HTML不需要自动关闭"void"元素.+1为连贯的答案. (5认同)
  • 如果定位4.01 Transitional及更高版本,HTML5或XHTML将无法使用W3C的HTML检查程序进行验证.另请参阅[W3C标记验证服务](https://validator.w3.org/).你需要使用`<img rel="nofollow noreferrer" src ='stackoverflow.png'>`(如果它对你很重要). (2认同)

Ed *_*eal 44

<img src='stackoverflow.png' />
Run Code Online (Sandbox Code Playgroud)

工作正常并正确关闭标签.最好为alt视障人士添加属性.

  • 正确的是,"<img rel="nofollow noreferrer" />"在[X] HTML/XML中是有效的,尽管现在使用XHTML是非常罕见的,如果您的服务器将页面作为"text/html"提供,您只需要担心的是写有效的HTML.必须将HTML应用程序迁移到XHTML的几率接近于零. (4认同)
  • 如果针对 4.01 Transitional 及更高版本,上述答案将无法使用 W3C 的 HTML 检查器进行验证。另请参阅 [W3C 标记验证服务](https://validator.w3.org/)。我相信上面的答案需要 HTML5 或 XHTML。为了避免验证失败,您需要使用一个 `&lt;img src='stackoverflow.png'&gt;`(如果它对您很重要)。 (2认同)

She*_*man 10

实际上,在 HTML5 中 只有第一个有效

<img src='stackoverflow.png'>  
Run Code Online (Sandbox Code Playgroud)

只有最后两个在 XHTML 中有效

<img src='stackoverflow.png'></img>  
<img src='stackoverflow.png' />
Run Code Online (Sandbox Code Playgroud)

(虽然不是严格要求,但alt通常也应该包含一个属性)。

也就是说,您的 HTML5 页面可能会按预期显示,因为浏览器会将您的 html 重写或解释为它认为您的意思。例如,这可能意味着它将标签从
<div />变为<div></div>。或者它可能只是忽略了最后的斜线<img ... />
请参阅 2016:将 HTML5 作为 XHTML 5.0 提供旧版验证。
请参阅:2011 年讨论和其他链接,但随着时间的推移,一些内容可能会发生变化

部分原因是浏览器非常努力地纠正错误。另外,因为自闭标签和无效标签存在很多混淆。最后,规范已经改变,或者并不总是清晰的,浏览器试图向后兼容。

因此,虽然您可能可以使用这三个选项中的任何一个,但
只有第一个选项符合 HTML5 标准,并且保证通过 HTML5 验证器。

一个合理的策略可能是:

  • 编写不带结束斜杠的新代码。
  • 重构代码时,当您遇到附近的图像标签时,请更新它们。
  • 除非出现特殊需要,否则不必过度担心您不接触的遗留文件中的标签。

以下是HTML5 中不应关闭的标签列表:

 <br>    <hr>    <input>       
 <img>  <link>   <source>  
 <col>  <area>   <base>
 <meta> <embed>  <param>  
<track>  <wbr>   <keygen> (HTML 5.2 Draft removed)
Run Code Online (Sandbox Code Playgroud)

  • @Rob是的,它是可选的,但这样做是完全有效的。这使得“实际上,只有第一个在 HTML5 中有效”这一说法在技术上是不正确的。第二个在 HTML5 中也有效。不是必需的,但有效。没有人认为这是必要的。只有根据规范,使用标签的自关闭形式在所有当前形式的 XHTML 和 HTML 中才有效。 (10认同)
  • 这在技术上是不正确的。自闭合 void 元素在 html 5 中完全有效。请参阅 https://html.spec.whatwg.org/#start-tags ,这将使 `&lt;img src='stackoverflow.png' /&gt;` 在任何版本中都有效XHTML 和 HTML 5。 (3认同)
  • @Rob根据我在第12.1.2.1.6节中链接的WHATWG文档-“然后,如果该元素是void元素之一,或者如果该元素是外来元素,则可能有一个U+002F SOLIDUS特点 (/)。该字符对 void 元素没有影响,但在外部元素上,它将开始标记标记为自闭合。根据第 12.1.2 节,img 是一个 void 元素 (3认同)