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 相关文章推荐
css背景图片的背景裁切、背景透明度、背景变换等效果运用
Dec 24 HTML / CSS
纯CSS3实现带动画效果导航菜单无需js
Sep 27 HTML / CSS
用CSS3来实现社交分享按钮
Nov 11 HTML / CSS
一款基于css3麻将筛子3D翻转特效的实例教程
Dec 31 HTML / CSS
HTML5+CSS3网页加载进度条的实现,下载进度条的代码实例
Dec 30 HTML / CSS
css3进阶之less实现星空动画的示例代码
Sep 10 HTML / CSS
html5理解head_动力节点Java学院整理
Jul 13 HTML / CSS
HTML5 canvas基本绘图之图形变换
Jun 27 HTML / CSS
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
Oct 16 HTML / CSS
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
Mar 02 HTML / CSS
HTML5触摸事件实现移动端简易进度条的实现方法
May 04 HTML / CSS
详解window.open被浏览器拦截的解决方案
Jul 18 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预定义常量
2006/12/25 PHP
需要发散思维学习PHP
2009/06/29 PHP
PHP MemCached高级缓存配置图文教程
2010/08/05 PHP
php学习笔记 数组的常用函数
2011/06/13 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
PHP也能干大事之PHP中的编码解码详解
2015/04/20 PHP
[原创]smarty简单模板变量输出方法
2016/07/09 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
juqery 学习之四 筛选查找
2010/11/30 Javascript
JavaScript Title、alt提示(Tips)实现源码解读
2010/12/12 Javascript
jquery 插件学习(二)
2012/08/06 Javascript
jquery实现当滑动到一定位置时固定效果
2014/06/17 Javascript
jquery实现在页面加载的时自动为日期插件添加当前日期
2014/08/20 Javascript
生成二维码方法汇总
2014/12/26 Javascript
jQuery实现的多屏图像图层切换效果实例
2015/05/07 Javascript
JavaScript每天定时更换皮肤样式的方法
2015/07/01 Javascript
基于jquery实现人物头像跟随鼠标转动
2015/08/23 Javascript
Angular 根据 service 的状态更新 directive
2016/04/03 Javascript
bootstrap常用组件之头部导航实现代码
2017/04/20 Javascript
JavaScript编程设计模式之构造器模式实例分析
2017/10/25 Javascript
Angular2中监听数据更新的方法
2018/08/31 Javascript
vue实现后台管理权限系统及顶栏三级菜单显示功能
2019/06/19 Javascript
python实现在windows下操作word的方法
2015/04/28 Python
Python的Django框架中URLconf相关的一些技巧整理
2015/07/18 Python
Python实现字符串的逆序 C++字符串逆序算法
2020/05/28 Python
完美解决安装完tensorflow后pip无法使用的问题
2018/06/11 Python
Python实现base64编码的图片保存到本地功能示例
2018/06/22 Python
python django生成迁移文件的实例
2019/08/31 Python
Python3 实现减少可调用对象的参数个数
2019/12/20 Python
Python面向对象原理与基础语法详解
2020/01/02 Python
Java的接口和C++的虚类的相同和不同处
2014/03/27 面试题
水果连锁超市创业计划书
2014/01/24 职场文书
物业品质提升方案
2014/06/08 职场文书
辞职信格式模板
2015/02/27 职场文书
素质拓展训练感想
2015/08/07 职场文书
Java数组详细介绍及相关工具类
2022/04/14 Java/Android