APP下载

让您的页面随“机”应变
——浅谈响应式Web设计方法

2015-10-31曾瑶

中国传媒科技 2015年9期
关键词:浏览器代码页面

文|曾瑶

让您的页面随“机”应变
——浅谈响应式Web设计方法

文|曾瑶

随着3G、4G的普及,媒体融合的发展,移动设备正超过桌面设备,成为访问互联网的最常见终端。于是,几乎每个网站都希望有专门的移动设备版本。最完美的情况,就是为iPhone、iPad、主流Android设备……各自打造一款页面。但不同设备的屏幕尺寸规格、分辨率甚至屏幕定向方式都可能不同,况且又如何应对不断被研发出来的各种新设备呢?在当前多屏、多终端、多媒体融合发展新形式下如何让我们的页面随“机”应变,适应各种设备终端?本文要介绍的响应式Web设计就是一套可行解决方案。

响应式Web设计的理念

响应式Web设计是由Ethan Marcotte在2010年提出,其理念就是,页面设计能自动适应设备环境(屏幕尺寸、分辨率和系统平台等)和用户行为(屏幕定向),实现一套页面适配多种终端。主要的实现方法包含弹性布局、液态网格、液态图片、媒体查询(media query)的使用等多方面。

响应式Web设计的方法

1、弹性布局(flexible layout)

我们可以通过响应式的设计和开发思路让页面更加“弹性”,无论用户切换设备的屏幕定向方式,还是从台式机转到iPad上浏览,页面都会富有弹性。弹性布局使用独立的样式表,或者使用CSS media query。多数样式设置不会被影响和改变,只有一些特定的元素会通过浮动、宽度和高度等的设定发生变化。如果窗口或容器变的过窄或是过宽,则通过一个子级样式表来继承主样式表的设定,并专门针对某些布局结构进行样式覆写。我们来看以下示例:

默认主样式表style.css(图1)

子级样式表mobile.css,专门针对移动设备进行样式设置(图2):

图1 

图2 

再使用下文将重点论述的媒体查询代码,实现根据屏幕宽度,自动加载不同样式表(图3):

以上代码实现的大致视觉效果如下图所示(图4):

2、液态网格(fluid grid)

图3 

图4 

“液态网格”是指各个区块的位置都是浮动的,不是固定不变的。各区块的大小都采用百分比而不是使用绝对值。例如(图5):

图5 

float的好处是,如果宽度太小,放不下两个元素,后面的元素会自动浮动到前面元素的下方,不会在水平方向溢出,避免出现水平滚动条。

3、液态图片(fluid image)

响应式Web设计的思路中,一个重点考虑的因素是怎样实现图片的自动缩放。这只要一行CSS代码:

img { max-width∶ 100%;}

老版本的I E不支持m a xwidth,所以只好写成:

img { width∶ 100%; }

此外,windows平台缩放图片时,可能出现图像失真现象。这时,可以尝试使用IE的专有命令:

img { -ms-interpolationmode∶ bicubic; }

或者,Ethan Marcotte的imgSizer.js(图6)。

图6 

图7 

图8 

只要没有其他涉及到图片宽度的样式代码覆盖掉这行规则,且其容器可视部分的宽度不小于图片原始宽度,图片就会以其原始宽度进行加载。同时当窗口或容器变窄时,图片的宽度也会相应减小,保证图片不会被容器隐藏或覆盖。

4、媒体查询(Media Queries)

实现响应式Web设计的关键技术是CSS3。CSS 3的media query是对 media type(媒体类型)的一种增强,它为我们在不同设备和环境下实现丰富的界面提供了一种方法。

CSS3添加了很多功能属性,包括max-width(最大宽度)、devicewidth(设备宽度)、orientation(屏幕定向)。在CSS3发布之后出现的苹果或Android设备,都可以很好的支持这些属性。媒体查询功能主要依赖于min-width和max-width这两个属性,可以同时判断屏幕尺寸与浏览器实际宽度(图7)。

以上代码中定义的类(bigScreenClass)只有在浏览器或屏幕宽度超过720px时才会有效。

如果我们希望通过媒体查询作用于某种特定的设备,而忽略其上运行的浏览器与设备屏幕宽度不一致(比如没有最大化)的情况,那么我们就需要使用min-devicewidth与max-device-width属性来判断设备本身的屏幕宽度(图8)。

对于iPad来说,orientation属性尤其有用(图9)。

图9 

但是,这个属性目前只在iPad上有效。对于其他可以转屏的设备,可以通过min-device-width和max-device-width来变通实现。

另外,我们还可以组合使用上述属性,对某种屏幕尺寸范围进行锁定,例如(图10):

图10 

上述代码可应用于窗口或屏幕宽度在760px至1200px之间的所有设备。

其实,我们也可以选择使用多个样式表的方式来实现媒体查询(如上文“弹性布局”小节中代码示例),这样做的好处是利于资源的组织和维护,但效率不高。

我们需要根据实际情况决定使用媒体查询的方式。比如,对于iPad,就尽量将媒体查询直接写在一个样式表中,因为使用iPad的用户随时可能切换屏幕定向,我们必须选择效率最高的方式以保证页面快速响应屏幕尺寸的变化。

5、禁用图片自动缩放

图11 

在苹果的某些设备中,页面将自动同比例缩小至最适宜屏幕尺寸的大小,横向不出现滚动条,用户可通过放大页面的局部并进行拖拽来浏览整个页面。于是就会产生一个问题,我们应用响应式Web设计,专门为iPhone的小屏输出的小图片,也会随着整个页面一起被同比缩小。

使用meta标记,禁用图片自动缩放可以解决类似问题。在页面的〈head〉部分添加一行代码:

viewport是网页默认的尺寸,代码的意思是,页面宽度默认等于设备宽度(width=devicewidth),初始缩放比例(initialscale=1)为1,即网页原始大小占屏幕面积的 100%,maximumscale 表示最大缩放比例。

包括IE9在内的所有主流浏览器都支持这个属性设置,而对于老式浏览器(主要是IE6、7、8),则需要使用css3-mediaqueries.js脚本。

6、使用相对值

响应式web页面要根据屏幕尺寸调整布局,因此不能使用绝对宽度的布局,也不能使用具有绝对宽度的元素,即我们的CSS代码不能指定像素值宽度,而要指定百分比宽度:width∶ xx%或者width∶ auto。字体也不能使用绝对大小(px),而只能使用相对大小(em)。另外,绝对定位(position∶ absolute)的使用,也要非常小心。

响应式web设计的应用

目前响应式web设计现在还是个很时髦的技术,而苹果官网已经成功实现,不愧为为IT领域的时尚代表。

响应式web设计的优缺点

响应式 Web 设计是当前媒体融合,移动互联网应用及终端被广泛使用的新形势下产生的需求,它的优点是显而易见的:

1. 响应式Web 设计向用户提供的 Web 界面可以适应多样化的设备屏幕。随着移动终端越来越多,有利于提升用户体验。

2. 由于响应式网站只需设计一个布局便可适配所有类型的设备,维护成本大大降低,可以明显地减少您的工作量。而开发一个独立的移动网站,则需要维护两个网站,而且还涉及到两个网站的数据同步。

但响应式web设计并不完美,它不是万能解决方案,并不能真正替代移动网站。主要表现在:

1. 对于CPU和资源都紧张的移动设备来讲,下载了一些不必要的HTML/CSS、图片等资源,占用带宽。

2. 由于响应式 Web 设计方法主要依赖于CSS3,很多老版本的浏览器并不能很好的支持。

(作者单位:新华社技术局)

猜你喜欢

浏览器代码页面
刷新生活的页面
答案
让Word同时拥有横向页和纵向页
微软发布新Edge浏览器预览版下载换装Chrome内核
反浏览器指纹追踪
创世代码
创世代码
创世代码
创世代码
浏览器