现代浏览器中img标签的src属性是否有srcset无法替代的作用?非旧浏览器场景需添加吗?
关于带srcset的img元素是否需要src属性的问题
核心结论
如果完全不考虑旧浏览器兼容,带srcset(配合sizes)的<img>元素确实不需要添加src属性,现代浏览器能正常解析并加载合适的图片,加载失败时也会正确显示alt文本,就像你给出的示例一样:
<img srcset="//cdn.glitch.global/8b425bca-2f6e-497b-baf5-8b951ea30edf/firefox_logo-only_RGB120.png 120w, //cdn.glitch.global/8b425bca-2f6e-497b-baf5-8b951ea30edf/firefox_logo-only_RGB400.png 400w" sizes="(max-width: 500px) 120px, 400px" alt="Mozilla logo">
为什么MDN标注src为必填,但实际无src能运行?
- 规范要求 vs 浏览器容错:HTML官方规范中,
src是<img>的必填属性,这是为了保障对不支持srcset的旧浏览器(比如IE11及更早版本)的兼容性——这类浏览器无法识别srcset,如果没有src就无法加载任何图片,甚至可能出现布局异常。 - 现代浏览器的优化:支持
srcset的现代浏览器做了容错处理,当检测到存在srcset但缺失src时,会自动从srcset中选择合适的图片加载(比如你提到的媒体条件不满足时用最后一个条目),这属于浏览器对规范的兼容优化,并非规范本身允许缺失src。
额外注意点
如果你的项目使用了静态代码检查工具(如HTMLHint、ESLint的HTML插件),这类工具可能会严格遵循HTML规范,抛出src缺失的警告。如果需要通过检查,可以添加一个占位值(比如和srcset中某个条目一致的地址),但这不是功能性需求。
内容的提问来源于stack exchange,提问作者Superhuman
相关产品推荐
相关产品推荐

