高分屏下<img>模糊主因是浏览器用低分辨率图强行拉伸填充CSS像素区域,触发双线性插值致边缘发虚;根本解法是用srcset+sizes让浏览器按设备像素比自动选对图源,并配合image-rendering等CSS控制重采样。
<img> 会模糊不是图片本身糊,而是浏览器在高 window.devicePixelRatio(比如 2x/3x)屏幕上,用低分辨率图强行拉伸填充 CSS 像素区域,触发双线性插值——结果就是边缘发虚、文字发毛、图标变“毛玻璃”。常见于直接设 width/height 属性缩放小图,或没提供适配资源。
srcset + sizes 让浏览器自动选对图这是最稳妥、不依赖 JS、兼容主流浏览器的方案。关键不是“换高清图”,而是告诉浏览器:“不同设备像素密度下,该加载哪张”。
srcset 里只用 w 描述符(如 "img-800.jpg 800w"),别混用 x 和 w,否则解析逻辑混乱sizes 必须写实际 CSS 显示宽度(如 "(max-width: 768px) 100vw, 50vw"),不能写 100% 或留空src 是 fallback,必须存在且是中等分辨率(比如 800w),别设成 400w 小图示例:
<img src="img-800.jpg" srcset="img-400.jpg 400w, img-800.jpg 800w, img-1200.jpg 1200w" sizes="(max-width: 480px) 100vw, (max-width: 960px) 50vw, 800px" alt="图表">
当无法提供多倍图(比如动态生成的头像、截图),可尝试用 CSS 控制重采样方式。注意:它不提升真实分辨率,只改变插值算法。
立即学习“前端免费学习笔记(深入)”;
image-rendering: crisp-edges 对线条图、图标有效,让边缘硬朗;对照片类内容可能显锯齿,别乱套image-rendering: pixelated 强制最近邻缩放,适合像素风,但普通场景会明显块状-webkit-optimize-contrast 在 Safari 旧版里还能起效,新版本已不推荐<img> 上,不是父容器;且需配合 width/height 固定尺寸,否则无效Word 不是浏览器,它把 HTML 中的 <img> 当作嵌入对象处理,默认按系统缩放比(如 125%)二次拉伸,再用双线性滤波重采样——这才是 Word 里图变糊的根本原因。
srcset 必须带 @2x 版本,width/height 要和 @2x 图的物理像素匹配(如图是 600×400,就设 width="300")style="image-rendering: -webkit-optimize-contrast;",这是抑制 Word 内部模糊插值的唯一有效手段300 磅),别拖拽SVG 在 Word 里基本等于放弃——粘贴即转位图,再高清也糊。真要矢量保真,提前导出为 2x PNG,再走 srcset 流程。