Retina Images
特别声明:Retina Image是Jeremy Worboys创建,版权归于:
Creative Commons Attribution 3.0 Unported License
,如需转载此文,需在明显位置注明Retina Images官网地址:http://retina-images.complexcompulsions.com以及作者相关信息
译者:大漠
关于Retina Images
Retina Images是为不同设备提供不同的的图像,换句话说“Retina Images是为不同分辨率设备查看,提供不同的图像”。
一旦安装在你的网站上(非常简单!)。你只需要为Retina屏幕设备创建高分辨率的图像,其他的Retina Images会帮你实现。你甚至不需要修改任何“<img>”标签(在img中设置他们的宽度和高度)。
Retina Images的工作原理
- 当服务器加载你的页面,通过“JavaScript”或者CSS(JavaScript禁用时),给“cookie”设置一个“devicePixlRatio”值。
- 当服务器接收到图像的加载请求时,“.htaccess”文件会告诉“retinaimages.php”加载服务器上的图像。
-
“retinaimages.php”会按以下四个条件进行查询检查:
- “cookie”中是否存在“devicePixelRatio”。
- “cookie”中“devicePixelRatio”的值大于1。
- 高分辨率图像是否存在。
- 上面任何一条不符合,将会发送普通分辨率图像。否则将给设备提供高分辨率的图像。
服务器的设置
安装Retina Images非常简单
1、将“retinaimages.php”和“.htaccess”文件安装在你服务器的根目录下(通常是在“public_html”文件目录)。
注意:如果你的项目中存在“.htaccess”文件,千万不要直接覆盖他,你只需要将文件中的内容复制后粘贴到你项目中的“.htaccess”文件中。
2、在每个页面的“<head>”区域中,在所有CSS文件前放置下面的JavaScript代码:
<script> (function(w){ var dpr=((w.devicePixelRatio===undefined)?1:w.devicePixelRatio); if(!!w.navigator.standalone){ var r=new XMLHttpRequest();r.open('GET','/retinaimages.php?devicePixelRatio='+dpr,false);r.send() }else{ document.cookie='devicePixelRatio='+dpr+'; path=/' } })(window) </script>
3、在“<body>”标签内插入下面的CSS:
<noscript> <style id="devicePixelRatio" media="only screen and (-moz-min-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2)"> #devicePixelRatio{ background-image:url("/retinaimages.php?devicePixelRatio=2") } </style> </noscript>
注意:上面这段代码一定要放置在“<body>”和“</body>”之间。
4、为高分辨率创建翻倍像素的图像,并以“@2x”关皱键词结尾保存高分辨率的图像。参考实例。
HTML图像
HTML图像是最简单的,你只需要设置“<img>”标签,可能工作起来没有任何变化。
你所担心的是,针对高分辨率图像,你必须在“<img>”标签中设置“width”和“height”属性值。
<img src="my-image.png" alt="My awesome image" width="300" height="90">
CSS图像
CSS图像通常需要做一下工作,使用CSS图像,必须配合“background-size”属性才能正常工作。下面是Retina屏幕下通过background-size来控制图像适应的三种简单方法:
CSS背景图像
使用像素“px”固定值,这个值等于非Retina下图像的尺寸大小:
.some-selector { background-image: url("my-image.png"); background-size: 300px 90px; }
图像替换
如果标准图像大小和容器大小一样,那么你可以通过下面的方法简单的实现:
.some-selector { background-image: url("my-image.png"); background-size: 100% 100%; }
.some-selector { background-image: url("my-image.png"); background-size: cover; }
注:有关于background-size的详细介绍,可以点击这里。
图像示例
普通显屏下图像(非Retina屏幕下)
settings.png
59px × 59px
Retina显屏下图像
118px × 118px
优点
- 用户只需下载一张图像;
- 支持所有图像格式;
- 如果高分辨率图像不能使用,会返回普通图像
- 如果“JavaScript”和“CSS”或者“Cookies”禁用,也将返回普通图像
缺点
- "<img>"标签心需设置明确的“width”和“height”属性值(属性值大小和普通图像大小一致)
- CSS背景图像必须使用“background-size”属性。
插件
Jordy Meow为Wordpress写了一个WP Retina 2x插件
让你的网站在Retina屏幕设备下图像看起清晰细腻。
特别声明:Retina Image由Jeremy Worboys创建,版权Creative Commons Attribution 3.0 Unported License。W3cplus仅根据Retina Images官网所译,为广在中国前端人员服务。如需转载需要在明显位置注官网地址: http://retina-images.complexcompulsions.com。