CSS 或 srcset 让浏览器自动切换 1X/2X/3X 图像

作者: admin 分类: css 发布时间: 2018-09-29 16:33

现在很多客户都买高分屏的电脑,如果直接发 JPG 图给客户,会影响设计质量。为了让网站设计效果图更加真实,最近把设计提案直接做成 Web 版,模拟浏览器真实视觉效果,同时能自动识别是否为视网膜显示屏,并自动切换为 2X 或 3X 图像。

这里介绍2个简单的方法来实现这个效果,分别是使用 CSS 的媒体查询或 srcset 属性来处理这个问题。

开始之前,我们要准备3张图:

images100.jpg (为1X大小图像,100px * 100px)
images200.jpg (为2X大小图像, 200px * 200px)
images300.jpg (为3X大小图像, 300px * 300px)

css device pixel ratio

CSS教程:自动切换 1X/2X/3X 图像
在线演示:http://www.shejidaren.com/examples/css-device-pixel-ratio/

下面来看教程吧。

方法一:使用 CSS 的 DevicePixelRatio 媒查询属性

CSS 样式代码

/*默认大小*/
.photo {background-image: url(image100.png);}
/* 如果设备像素大于等于2,则用2倍图 */
@media screen and (-webkit-min-device-pixel-ratio: 2),
screen and (min--moz-device-pixel-ratio: 2) {
  .photo {
    background-image: url(image200.png);
    background-size: 100px 100px;
  }
}
/* 如果设备像素大于等于3,则用3倍图 */
@media screen and (-webkit-min-device-pixel-ratio: 3),
screen and (min--moz-device-pixel-ratio: 3) {
  .photo {
    background-image: url(image300.png);
    background-size: 100px 100px;
  }
}
.photo {width:100px;height:100px;}

html 代码

<div class="photo"></div>

方法二:直接使用 IMG 的 SRCSET 属性

<img width="100" height="100" src="image100.png" srcset="image200.png 2x,image300.png 3x"/>

上面代码中,浏览器会通过 srcset 属性来自动选择2X,3X图,比如用 iPhone 6s Plus,就会自动选择3x 的图像。

想了解更多设备的devicePixelRatio,可查看到这个网址查看:

https://bjango.com/articles/min-device-pixel-ratio/

以上代码都需要支持 CSS3 的浏览器才能兼容,过低版本将无法看到效果。