image-set实现Retina屏幕下图片显示详细介绍


Posted in HTML / CSS onDecember 24, 2012

在不支持image-set的浏览器下,他会支持background-image图像,也就是说不支持image-set的浏览器下,他们解析background-image中的背景图像;
支持image-set:如果你的浏览器支持image-sete,而且是普通显屏下,此时浏览器会选择image-set中的@1x背景图像;
Retina屏幕下的image-set:如果你的浏览器支持image-set,而且是在Retina屏幕下,此时浏览器会选择image-set中的@2x背景图像。
上面就是有关于“image-set”的简单介绍。
为什么要使用image-set而不使用Media Queries?
如果你有阅读有关于Retina的文章,你就会知道,在Retina屏幕下实现图像显示的方法有很多种,比如说“img”标签方法、javascript和方法,还有“Media Queries”方法,特别是“Media Queries”方法(如果你不清楚这些方法,可以点击 这和这)。既然有这么多种方法要以实现Retina屏幕下的图像显示,那么为什么还要使用“image-set”方法。这个问题问得非常的好。Jason Grigsby 在“Safari 6 and Chrome 21 add image-set to support retina images ”中把为什么要使用“image-set”而不使用CSS3的“Media Queries”实现Retina屏幕下图像方法做了两点描述。

不像Media Queries,image-set不需要告诉浏览器使用什么图像,而是直接提供了图像让浏览器选择。在未来,我希望有人在使用Retina设备浏览网页,但网速慢时,告诉设备采用低分辨率的图像。甚至会更好,他能根据网速智能的选择需要的图像。

使用“Media Queries”的问题是,在高分辨率显示器下他没有选择的权利。也就是说,浏览器分辨率等于1或2或者其他的时候,浏览器必须加载指定的图像。
image-set的好处是,在支持image-set的浏览器会在高分辨下匹配需要的图像,而没有其他额外的功能。但我相信,为浏览器提供不同的图像选择,这浏览器在不同的分辨下选择正确的图像。
image-set能让各种不同分辨下的图像都显示在CSS中的同一个地方。而使用media queries显示不同图像时,你可能会隔开很多行代码,难于寻找到对应的图像。

image-set真的好强大,很可惜的是,他仅支持background-image属性,而不能使用在“<img>”标签中。
前面也说过了,目前image-set只能使用webkit浏览器的私有属性“-webkit”在“Safari6”和“Chrome21”下运行。现在在IOS 6得到 支持。不过很遗憾的是,目前别的浏览器还是不支持image-set,现在他仅是CSS4的一个草案,希望将来能写到标准中,造福于苦逼的前端人员。

image-set虽然目前是一个全新的属性,没有几个浏览器支持,但这是一种新技术,我们需要用起来,只有用的人多了,将来才有机会写入标准的规范中,正所谓“世上本无路,走的人多了,路就出来了”。但话说回来,这种技术用来解决Retina屏幕下的图像显示,是一种绝佳的方法,如果你开会的项目中有汲及到Retina设备的,不仿大胆的使用起image-set,就像qq.com这大佬一样。
东一榔头西一棒的说完了image-set,如果你不知道他是怎么一回事,其实不要紧,你只要先知道这样使用能帮你解决问题就OK,因为有太多的为什么我们无能力现在解决,但随着时间的累积,我们终有一天能搞明白他的原理。最后希望这篇文章能帮到大家,如果你有更好的方法,记得与我们一起分享。

HTML / CSS 相关文章推荐
在css3中background-clip属性与background-origin属性的用法介绍
Nov 13 HTML / CSS
CSS3 :nth-child()伪类选择器实现奇偶行显示不同样式
Nov 05 HTML / CSS
使用css3实现的windows8开机加载动画
Dec 09 HTML / CSS
CSS3 text-shadow实现文字阴影效果
Feb 24 HTML / CSS
CSS3实现缺角矩形,折角矩形以及缺角边框
Dec 20 HTML / CSS
用css3实现转换过渡和动画效果
Mar 13 HTML / CSS
HTML5组件Canvas实现图像灰度化(步骤+实例效果)
Apr 22 HTML / CSS
深入理解HTML的FormData对象
May 17 HTML / CSS
利用三角函数在canvas上画虚线的方法
Jan 11 HTML / CSS
iframe跨域的几种常用方法
Nov 11 HTML / CSS
video下autoplay属性无效的解决方法(添加muted属性)
May 19 HTML / CSS
amazeui页面校验功能的实现代码
Aug 24 HTML / CSS
今天学到的CSS最新技术(与图片背景相关)
Dec 24 #HTML / CSS
CSS3系列教程:背景图片(背景大小和多背景图) 应用说明
Dec 19 #HTML / CSS
css3实现背景颜色渐变让图片不再是唯一的实现方式
Dec 18 #HTML / CSS
css3制作动态进度条以及附加jQuery百分比数字显示
Dec 13 #HTML / CSS
CSS3线性渐变简单实现以及该属性在浏览器中的不同
Dec 12 #HTML / CSS
CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大
Dec 10 #HTML / CSS
CSS3制作半透明边框(Facebox)类似渐变
Dec 09 #HTML / CSS
You might like
编写安全 PHP应用程序的七个习惯深入分析
2013/06/08 PHP
浅谈PHP实现大流量下抢购方案
2017/12/15 PHP
PHP实现防止表单重复提交功能【基于token验证】
2018/05/24 PHP
PHP读取目录树的实现方法分析
2019/03/22 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
Firefox window.close()的使用注意事项
2009/04/11 Javascript
JavaScript 字符串与数组转换函数[不用split与join]
2009/12/13 Javascript
jQuery 数据缓存data(name, value)详解及实现
2010/01/04 Javascript
javascript最常用与实用的创建类的代码
2010/08/12 Javascript
不同的jQuery API来处理不同的浏览器事件
2012/12/09 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
浅析JavaScript中的常用算法与函数
2013/11/21 Javascript
jQuery通过Ajax返回JSON数据
2015/04/28 Javascript
直接拿来用的15个jQuery代码片段
2015/09/23 Javascript
jquery制作图片时钟特效
2020/03/30 Javascript
如何让一个json文件显示在表格里【实现代码】
2016/05/09 Javascript
jQuery 调用WebService 实例讲解
2016/06/28 Javascript
jQuery Json数据格式排版高亮插件json-viewer.js使用方法详解
2017/06/12 jQuery
Vue Transition实现类原生组件跳转过渡动画的示例
2017/08/19 Javascript
基于jquery实现五星好评
2017/11/18 jQuery
详解iview的checkbox多选框全选时校验问题
2019/06/10 Javascript
利用js-cookie实现前端设置缓存数据定时失效
2019/06/18 Javascript
mpvue 项目初始化及实现授权登录的实现方法
2020/07/20 Javascript
Django实现简单分页功能的方法详解
2017/12/05 Python
Python数据分析matplotlib设置多个子图的间距方法
2018/08/03 Python
用Python编写一个高效的端口扫描器的方法
2018/12/20 Python
Python中如何将一个类方法变为多个方法
2019/12/30 Python
PyTorch中反卷积的用法详解
2019/12/30 Python
Python如何使用队列方式实现多线程爬虫
2020/05/12 Python
全球工业:Global Industrial
2020/02/01 全球购物
学前教育专业毕业生自荐信
2013/10/03 职场文书
小学一年级学生评语大全
2014/12/25 职场文书
会计求职自荐信范文
2015/03/04 职场文书
完美解决golang go get私有仓库的问题
2021/05/05 Golang
redis 查看所有的key方式
2021/05/07 Redis
Python爬虫基础之初次使用scrapy爬虫实例
2021/06/26 Python