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实现表单验证效果(非常不错)
Jan 18 HTML / CSS
如何利用CSS3制作3D效果文字具体实现样式
May 02 HTML / CSS
用纯css3实现的图片放大镜特效效果非常不错
Sep 02 HTML / CSS
css3的transition属性详解
Dec 15 HTML / CSS
CSS3中线性颜色渐变的一些实现方法
Jul 14 HTML / CSS
html5 touch事件实现触屏页面上下滑动(二)
Mar 10 HTML / CSS
HTML高亮关键字的实现代码
Oct 22 HTML / CSS
html5中JavaScript removeChild 删除所有节点
May 16 HTML / CSS
html5使用canvas画一条线
Dec 15 HTML / CSS
html5调用app分享功能示例(WebViewJavascriptBridge)
Mar 21 HTML / CSS
HTML5 实现图片上传预处理功能
Feb 06 HTML / CSS
基于CSS3画一个iPhone
Apr 21 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/07/01 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
tp5实现微信小程序多图片上传到服务器功能
2018/07/16 PHP
PHP chop()函数讲解
2019/02/11 PHP
javascript 可以拖动的DIV(二)
2009/06/26 Javascript
从零开始学习jQuery (四) jQuery中操作元素的属性与样式
2011/02/23 Javascript
jQuery 1.9.1源码分析系列(十三)之位置大小操作
2015/12/02 Javascript
基于JS实现二维码图片固定在右下角某处并跟随滚动条滚动
2017/02/08 Javascript
Javascript实现运算符重载详解
2018/04/07 Javascript
create-react-app 修改为多入口编译的方法
2018/08/01 Javascript
vue地址栏直接输入路由无效问题的解决
2018/11/15 Javascript
vue使用自定义指令实现拖拽
2021/01/29 Javascript
通过实例解析vuejs如何实现调试代码
2020/07/16 Javascript
Vue+element+cookie记住密码功能的简单实现方法
2020/09/20 Javascript
微信小程序反编译的实现
2020/12/10 Javascript
手写Vue2.0 数据劫持的示例
2021/03/04 Vue.js
你所不知道的Python奇技淫巧13招【实用】
2016/12/14 Python
Python中表达式x += y和x = x+y 的区别详解
2017/06/20 Python
python回调函数中使用多线程的方法
2017/12/25 Python
Python用于学习重要算法的模块pygorithm实例浅析
2018/08/16 Python
一行代码让 Python 的运行速度提高100倍
2018/10/08 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
django model通过字典更新数据实例
2020/04/01 Python
Python修改DBF文件指定列
2020/12/19 Python
详解HTML5.2版本带来的修改
2020/05/06 HTML / CSS
英国一家专门出售品牌鞋子的网站:Allsole
2016/08/07 全球购物
施华洛世奇波兰官网:SWAROVSKI波兰
2019/06/18 全球购物
宗教学大学生职业生涯规划范文
2014/02/08 职场文书
和解协议书
2014/04/16 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
调研汇报材料范文
2014/08/17 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
工厂员工辞职信范文
2015/05/12 职场文书
防震减灾主题班会
2015/08/14 职场文书
《最后一头战象》读后感:动物也有感情
2020/01/02 职场文书