type属性必须使用标准mime类型且与服务器content-type完全一致,否则浏览器跳过该;正确写法为image/webp、image/avif、image/jpeg等,错误示例包括webp、image.webp、image/jpg。

type 属性必须写标准 MIME 类型,且与服务器返回的 Content-Type 完全一致,否则浏览器直接跳过该 <source></source> —— 这是 WebP 降级失效最常见的原因。
type 值怎么写才有效
浏览器只认标准 MIME 类型字符串,不解析后缀、不猜测格式。写错一个字符,<source></source> 就等于不存在。
- ✅ 正确:
type="image/webp"、type="image/avif"、type="image/jpeg" - ❌ 错误:
type="webp"(缺image/)、type="image.webp"(用点号不是斜杠)、type="image/jpg"(JPG 的标准 MIME 是image/jpeg) - ⚠️ 注意:
type="image/png"虽然合法,但 PNG 本身无压缩优势,一般不用在降级链里;WebP/AVIF → JPEG 才是主流路径
为什么写了 type="image/webp" 却始终加载 JPG
常见静默失败,不是代码逻辑问题,而是环境链路断了。打开 DevTools → Network 面板,逐个检查 <source></source> 对应请求的状态和响应头:
- 状态为
(blocked:mime-type):说明服务器返回的Content-Type和type值不匹配(比如返回text/plain或空,或 Nginx 没配types { image/webp webp; }) - 状态为
404或406 Not Acceptable:CDN 或后端未透传Accept: image/webp请求头,导致无法按需返回 WebP 文件 - 状态正常但图片仍是 JPG:确认该设备是否真支持 WebP(如 Safari 13.1 之前、部分 Android WebView 不支持),可用
document.createElement('picture').canPlayType('image/webp')简单检测
source 顺序 + img src 兜底的硬约束
浏览器从上到下扫描 <source></source>,遇到第一个 media 匹配且 type 可解码的就停。顺序不是可选项,是执行逻辑本身:
- AVIF 放最前:
<source type="image/avif" ...></source>(Chrome 120+/Firefox 120+ 支持,iOS 16.4+ 实验性) - WebP 居中:
<source type="image/webp" ...></source>(iOS 14+ 安全,覆盖绝大多数现代设备) - JPEG 放最后:
<source type="image/jpeg" ...></source>(作为格式层面最后一道防线) -
<img>必须存在,且src必须指向 JPEG 或 PNG 等通用格式 —— 它不是“备用”,是所有不支持type的老浏览器唯一能识别的入口。漏掉或写成src="xxx.webp",Safari 13 前会白屏
sizes 和 srcset 配合 type 使用时的细节
sizes 和 srcset 不影响 type 匹配逻辑,但决定最终加载哪个分辨率版本。它们只在某条 <source></source> 被选中后才起作用:
- 每个
<source></source>可独立写srcset和sizes,例如:<source media="(max-width: 768px)" srcset="hero-400.webp 400w, hero-800.webp 800w" sizes="100vw" type="image/webp"></source> -
<img>上也可以加srcset和sizes,用于优化它自身作为 fallback 时的 DPR 适配(比如<img src="hero.jpg" srcset="hero-1x.jpg 1x, hero-2x.jpg 2x">) - 不要指望
<img>的srcset能触发 WebP 加载 —— 它没有type,浏览器不会尝试解码 WebP
最容易被忽略的一点:type 降级不是“浏览器自动选最优”,而是“严格按顺序找第一个能用的”。你写的每一条 <source></source>,都必须确保文件存在、路径正确、服务器响应头匹配、且排在它前面的 source 真的不适用于当前设备——否则它根本不会被执行。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











