img 标签到底需要关闭吗?

2022-06-23 11:40:09 +08:00
 iceice121

偶然看到这个 Tag omission Must have a start tag and must not have an end tag.

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#technical_summary

同类的还有 input

F12 查看渲染出来的 img 也是没有关闭的,所以我就去看了看几个常用的 UI 框架文档

https://ant.design/components/card-cn/ (关闭)

https://element-plus.org/zh-CN/component/card.html#%E6%9C%89%E5%9B%BE%E7%89%87%E5%86%85%E5%AE%B9%E7%9A%84%E5%8D%A1%E7%89%87 (关闭)

https://quasar.dev/vue-components/avatar (未关闭)

https://mui.com/zh/material-ui/react-image-list/ (关闭)

那么问题来了,既然都能正常渲染,到底谁才是对的?

1493 次点击
所在节点    前端优化
9 条回复
wunonglin
2022-06-23 11:52:46 +08:00
不需要
kyuuseiryuu
2022-06-23 12:19:41 +08:00
应该
estk
2022-06-23 12:37:32 +08:00
vscode ,img 标签没有 alt 属性都给我 warning
marcong95
2022-06-23 14:17:55 +08:00
img 、input 这类的叫 Void Elements ,对于 HTML 不应闭合,但是 XHTML 、JSX 里必须闭合(所以你看的 UI 框架闭合的应该都是 React 的),Vue 的 Style Guide 没有特别强调,但是看 Style Guide 提及 <img> 的地方似乎都没有闭合

https://html.spec.whatwg.org/multipage/syntax.html#void-elements

Void elements only have a start tag; end tags must not be specified for void elements.
westoy
2022-06-23 14:24:04 +08:00
这涉及到当年 xhtml 快一捅天下的时候突然就被 html5.0 爆了菊花的公案了

此时有请 chinaxhtml 站长 @laogui
zsxeee
2022-06-23 15:20:31 +08:00
是 must not have "an end tag",指的是</img>这种。你说的是闭合标记,这个在 html 中是可选的。
dcsuibian
2022-06-23 15:36:35 +08:00
赞同#6 。

单标签都建议写成<br/>而不是<br>,养成习惯。
HTML 处理比较宽松,但不报错并不是说你就应该这么写。隔壁严谨的 XML 要气疯了,这样以后用上 JSX ( JavaScript XML )的时候也比较舒服。

而且,配合 IDE ,按 shift+. 你才能打出>,而按 /不是更方便么。
dcsuibian
2022-06-23 15:40:19 +08:00
顺便说一下,<script src="main.js"></script>这种标签,就算标签体里没有任何内容的,也绝不要写成单标签,会出错的。(原生 HTML 来说)
只有<img/>、<br/>这种标签体里永远没有内容的才写。
thunderw
2022-06-23 15:54:48 +08:00
HTML4 年代大家都是不关闭的。
关闭 img 应该是 XHTML 时代提出来的,参见 https://www.w3.org/TR/xhtml2/mod-image.html
<img alt="W3C Logo" src="W3C.png">W3C</img>

到 HTML5 了就又不提倡关闭了 <img> <img /> 都无所谓了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/861603

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX