V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
PageSpeed 相关文档
为 NGINX 编译 PageSpeed 支持
ngx_pagespeed
Configuring mod_pagespeed Filters
加载性能测试工具
WebPagetest
Gomez
iceice121
V2EX  ›  前端优化

img 标签到底需要关闭吗?

  •  
  •   iceice121 · 2022-06-23 11:40:09 +08:00 · 1423 次点击
    这是一个创建于 644 天前的主题,其中的信息可能已经有所发展或是发生改变。

    偶然看到这个 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/ (关闭)

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

    9 条回复    2022-06-23 15:54:48 +08:00
    wunonglin
        1
    wunonglin  
       2022-06-23 11:52:46 +08:00
    不需要
    kyuuseiryuu
        2
    kyuuseiryuu  
       2022-06-23 12:19:41 +08:00 via iPhone
    应该
    estk
        3
    estk  
       2022-06-23 12:37:32 +08:00 via Android
    vscode ,img 标签没有 alt 属性都给我 warning
    marcong95
        4
    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
        5
    westoy  
       2022-06-23 14:24:04 +08:00
    这涉及到当年 xhtml 快一捅天下的时候突然就被 html5.0 爆了菊花的公案了

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

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

    而且,配合 IDE ,按 shift+. 你才能打出>,而按 /不是更方便么。
    dcsuibian
        8
    dcsuibian  
       2022-06-23 15:40:19 +08:00
    顺便说一下,<script src="main.js"></script>这种标签,就算标签体里没有任何内容的,也绝不要写成单标签,会出错的。(原生 HTML 来说)
    只有<img/>、<br/>这种标签体里永远没有内容的才写。
    thunderw
        9
    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 /> 都无所谓了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1181 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 23:06 · PVG 07:06 · LAX 16:06 · JFK 19:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.