快好知 kuaihz

利用media query让背景图适应不同分辨率的设备

随着上网方式的多样化,用户选择上网的工具不再仅是PC,而可以是手机,或者平板电脑。随之而来的问题是如何让网页适应不同分辨率,这给前端工程师们带来了新的挑战,其中重要的一点是如何让图片能在不同的分辨率下都能给用户带来良好的用户体验?

方法概述

 

CSS3中的media query属性让我们可以根据浏览器的高宽,设备的像素比等来使用不同的CSS。当然它还一些别的用法,具体请参考这里。

device-pixel-ratio是media query一查询条件,用于获得设备的像素比。一般来说iPhone4/4s的值是2,高分辨率的Andriod设备是1.5,一般设备是1,有了这些条件,我们就可以为不同的设备提供不同分辨率的图片了。

事先假定让图片兼容以上像素比,展示一张宽高为100px的图片。首先我们需要准备三张不同分辨率的图片:当正常像素比为1时,我们载入的是正常图片100px*100px,当像素比为1.5时,载入150px*150px的图片,当像素比为2.0,载入200px*200px的图片

利用media query我们可以这样写:

大家可以用不同的分辨率的设备查看Demo:

http://tgideas.qq.com/demo/media_query/demo_01.htm

 

效果对比:

 

由于像素比的改变,背景图像的尺寸按像素比的倍数放大,所以需要缩小图片,可利用background-size这个属性来缩放图片像素比为1.5,则background-size:1/1.5≈66.7%;像素比为2,则background-size:1/2≈50%。

优点:

1.使用CSS3的media query就可以做到设备像素比的判断,方法简单,成本低。

2.图片便于修改,只需修改css文件。

缺点:

使用会产生这样的问题,并不是每个设备都像iPhone4一样像素比是2。看看我们刚做的,光以上三种像素比,我们就得提供3张不同的图片,如果有更多种像素比呢,那可就是体力活了。

解决方法:或许我们可以创建一张更大的(2的n倍分辨率)的图片,然后按比例去缩小图片来适配不同像素比的设备。可这又意味着用户得加载更大的图片,耗费更多时间和流量。

兼容性

media query兼容性列表:

 

类型

IE

Firefox

Chrome

Opera

Safari

版本

(×)IE6

(×)Firefox 2.0

(√)Chrome 1.0.x

(√)Opera 9.63

(√)Safari 3.1

(×)IE7

(×)Firefox 3.0

(√)Chrome 2.0.x

(√)Safari 4

(×)IE8

(√)Firefox 3.5

 

 

 

从表中我们可以看出media query并不支持IE9以下浏览器。

考虑到多终端设备如iPhone,抑或是Android系统自带的浏览器,都是高级浏览器,对media query都做做到良好支持,所以我们可以把IE浏览器排除在外。

也可以添加添加下面的JS,让IE9之前的版本支持:

本站资源来自互联网,仅供学习,如有侵权,请通知删除,敬请谅解!
搜索建议:分辨率  分辨率词条  适应  适应词条  背景  背景词条  不同  不同词条  利用  利用词条  
设计

 如何发现交互设计中的思维盲区

在一个项目中,交互设计起着承上启下的作用。开发人员根据交互文档搭建初步的程序框架,视觉设计师基于交互设计进行精细的界面设计,之后再交付开发。交互设计方案的改动涉...(展开)

设计

 用户体验设计指引图

我也实在不知道如何去命名这样的图。这张是我在usability.gov网站上看到的:既不是项目流程图,也不是mind-manager思路整理图,当然,说成蓝图也...(展开)