decoding属性用于控制图片解码时机而非加载时机,有sync(同步阻塞主线程)、async(异步后台解码)和auto(浏览器自决)三值,推荐非关键图用async以提升页面响应性。

HTML5 中并没有名为 Decodings 的属性。你可能混淆了 decoding 属性(注意是单数、小写 d)——它是 HTMLImageElement 的一个标准属性,用于提示浏览器如何解码图像,从而优化主线程性能。
decoding 属性的作用与取值
该属性告诉浏览器:图像解码是否可以异步进行,避免阻塞渲染主线程。它有三个可选值:
- sync:同步解码(默认),图像在主线程中立即解码,可能造成卡顿,尤其对大图或批量图片
- async:建议浏览器异步解码(推荐用于非首屏、非关键图像)
- auto:由浏览器自主决定(当前多数浏览器行为等同于 sync,但未来可能优化)
如何正确使用 decoding 属性
直接在 标签中添加 decoding 属性即可:
@@##@@
JavaScript 动态设置也支持:
const img = new Image();<br>img.decoding = 'async';<br>img.src = 'photo.jpg';<br>document.body.appendChild(img);
⚠️ 注意:decoding 必须在设置 src 之前 设置,否则部分浏览器(如旧版 Chrome)会忽略该提示。
适用场景与性能收益
该属性对以下情况特别有效:
- 长页面中大量列表图(如商品网格、相册瀑布流)
- 懒加载(lazy-loaded)图像,在进入视口前就提前设置
decoding="async" - 通过
fetch()+createObjectURL()动态插入的图像
实测表明:在 100+ 张 2MB JPEG 的滚动列表中,启用 decoding="async" 可减少主线程图像解码耗时约 40–60%,滚动更流畅。
兼容性与注意事项
目前主流浏览器均支持(Chrome 78+、Firefox 69+、Edge 79+、Safari 16.4+)。但需注意:
- 不支持该属性的浏览器会静默忽略,降级为默认 sync 行为,无副作用
- 它只是“提示”,浏览器仍可能根据内存压力、CPU 负载等自行调整策略
- 对
或元素无效,需作用于最终生效的
- 与
loading="lazy"搭配使用效果更佳,但二者解决不同问题(加载时机 vs 解码时机)
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











