真正实现“双重优化”的关键是结构中type值、srcset描述符、sizes属性的严密配合:type="image/webp"必须与服务端Content-Type: image/webp完全一致;需分层设计,WebP格式优先且置于JPEG前,为强制兜底;srcset内仅用w或x单位不可混用;sizes须写真实视口单位,缺省将导致加载过大图片。

type="image/webp" 必须和服务端 Content-Type 完全一致
这是 WebP 回退失效的第一大原因。浏览器不认 "webp"、"image.webp" 或 "image/WebP"——只接受标准小写、带斜杠、无空格的 image/webp。
- 服务器返回
Content-Type: text/plain或image/jpeg?Chrome Network 面板会标为blocked:mime-type,直接跳过该 - Nginx 需显式配置:
types { image/webp webp; };CDN 要确保透传Accept: image/webp请求头 - 用
curl -I https://yoursite.com/photo.webp检查响应头,确认Content-Type: image/webp真实存在
WebP 优先 + 多尺寸 srcset 要分层写,不能混用 w 和 x
想同时做格式降级(WebP → JPEG)和分辨率适配(400w/800w/1200w),必须用两层结构:外层靠 srcset 提供同一格式下的多宽度版本。
将 Markdown 文章转换为微信公众号兼容的纯 HTML 格式。当用户要求"转成微信格式"、"生成公众号文章 HTML"、"排版到微信草稿箱"、"微信粘贴格式"时触发。输出带内联样式的纯 HTML,微信编辑器可直接渲染,无需额外适配。支持标题、段落、列表、粗体、行内代码、表格、引用块、代码块、配图的完整转换。
- 每个
的 srcset只能用w或只用x:写成"a-400w.webp 400w, a-800w.webp 800w"✅;混写"a-400w.webp 400w, a@2x.webp 2x"❌(Safari 可能整条忽略) - WebP
必须放在 JPEG 之前;但 JPEG 不能写成 ,必须塞进 里——否则 IE、旧 WebView 直接空白
-
sizes必须写,且单位要真实:比如移动端占满屏就写sizes="(max-width: 767px) 100vw, (min-width: 768px) 50vw",不写或写成"100%"会导致浏览器误估宽度,拉下远超需要的大图
不是可选配件,而是强制兜底入口
才触发加载。没有它,整个结构静默失败——页面留白,控制台也不报错。
-
<img src>必须指向一个真实可访问的 JPEG/PNG 地址,不能是 404、不能带动态参数如?format=webp,也不能是 base64(部分老浏览器 decode 失败) - 首屏关键图要在
上加
fetchpriority="high",加在上无效 - 所有格式图片(WebP/JPEG/AVIF)必须构图一致、尺寸比例相同,否则切换时会出现拉伸或跳变
- 别在 CSS 里用
background-image: url(x.webp)试图降级——CSS 不识别 type,也不协商格式,纯前端无解
quality=80 以上导出,避免色块;对全屏背景图,先裁剪核心区域(如 16:9),再转 WebP,比直接压原图效果好得多。工具推荐 Sharp(Node.js)、Squoosh(网页版),命令行可用 convert input.jpg -define webp:lossless=true output.webp。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










