lowsrc属性在现代浏览器中已完全不支持,它是ie4–ie6时代的非标准渐进式加载属性,因无w3c背书、仅ie实现、时序耦合强、体验粗糙且干扰现代加载机制,于2019年后被所有主流浏览器彻底移除。

lowsrc 属性在现代浏览器中已完全不支持,不是“部分兼容”或“需加前缀”,而是根本不会触发任何行为。
lowsrc 是什么?为什么被弃用?
lowsrc 是 IE4–IE6 时代为实现“渐进式图像加载”设计的非标准属性:
- 允许指定一张低分辨率图,在
src主图加载完成前先显示它 - 依赖浏览器对两张图的尺寸自动对齐与替换逻辑
但它存在几个致命问题:
- 没有 W3C 标准背书,仅 IE 实现,Firefox/Opera 从未支持
- 与
src的加载时序强耦合:必须先设lowsrc,再设src,否则低图会被直接丢弃 - 无法控制缩放、裁剪或过渡效果,视觉体验粗糙
- 会干扰现代预加载器(如
<link rel="preload">)和懒加载逻辑
2019 年后所有主流浏览器(Chrome、Firefox、Safari、Edge)均已移除该属性的解析逻辑。检查 DOM 时,img.lowsrc 返回 undefined;设置它也不会触发任何网络请求。
替代方案:现在怎么实现低质量占位图(LQIP)
真正可用、可控、可维护的方式只有两类:
-
CSS 背景图 + 内联 SVG 占位
@@##@@<rect width='\"100\"' height='\"60\"' fill='\"%23e0e0e0\"/'><text x='\"50\"' y='\"30\"' font-size='\"12\"' text-anchor='\"middle\"' fill='\"%23999\"'>LQIP</text>') center/cover;"></rect>
- 优势:零额外请求、可压缩进 HTML、支持响应式
- 注意:SVG 中特殊字符(如
#、)必须 URL 编码
-
srcset+loading="lazy"+ JavaScript 控制加载时机@@##@@ alt="风景照">- 配合 IntersectionObserver 切换
src,避免阻塞主图解码 - 不要用
onload直接触发,容易在慢网下造成白屏
- 配合 IntersectionObserver 切换
容易踩的坑
- 把
lowsrc和srcset混为一谈:前者是单图替换,后者是响应式多图选择,机制完全不同 - 在 Vue/React 中通过
:attrs="{ lowsrc: '...'}"动态绑定——DOM 层面无效,Vue 3+ 甚至会警告未知属性 - 误以为
loading="eager"能“恢复”lowsrc行为:它只影响加载优先级,不提供占位能力 - 用 base64 编码的
lowsrc值试图“兼容旧代码”:现代解析器直接忽略,且增大 HTML 体积
lowsrc 不是“过时但还能凑合”,它是已被彻底删除的 IE 遗迹。想做占位图,就老实用现代方案——尤其是内联 SVG,轻量、可靠、无兼容性包袱。












