高分屏图片模糊本质是像素密度翻倍后普通图分辨率不足致浏览器拉伸失真,解决核心是按dpr加载2x/3x图:用srcset/sizes响应式、CSS image-set()、媒体查询匹配dpr、SVG替代位图。
高分屏(如 Retina 屏)下 CSS 中的图片模糊,本质是像素密度翻倍后,普通图片没提供足够像素,浏览器被迫拉伸渲染导致失真。解决核心就一条:让设备像素比(dpr)为 2 或更高时,加载两倍(甚至三倍)分辨率的图片资源。
这是现代最推荐的方式,浏览器自动按屏幕 dpr 和视口宽度选最合适的图:
logo.png(1x)、logo@2x.png(2x)、logo@3x.png(3x) 标签中写:对背景图,CSS 中可用 image-set()(兼容性需注意,Safari / Chrome 支持较好):
适合纯 CSS 控制的背景图,兼容性更广(IE 不支持,但现代项目基本可忽略):
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dp
i) {注意:background-size 必须设为逻辑像素尺寸(比如图标本应显示为 24×24px),否则高分屏下会放大两倍显示。
SVG 是矢量格式,天生无损缩放,完全适配任意 dpr:
打开 Chrome DevTools → 设备模拟(Toggle device toolbar)→ 选择 iPhone 或自定义 high DPR 设备 → 切换 Network 面板查看实际加载的是哪张图;或者用 window.devicePixelRatio 在控制台确认当前 dpr 值。