介绍完响应式Web的背景和概念之后,是时候该介绍具体的实现方法了,其实响应式Web设计的方法很简单,就是利用CSS3的媒体查询Media Queries和Viewport来解决问题的。
首先我们一起来看看Media Queries,这里我只会对其做一个简单的列举介绍。(有兴趣深入的同学可以参考:http://www.w3.org/html/ig/zh/wiki/CSS3%E5%AA%92%E4%BD%93%E6%9F%A5%E8%AF%A2)
通过媒体查询的设置,我们可以根据屏幕宽度、屏幕方向等各个属性来加载不同场景下不同的CSS文件来渲染页面的视觉风格。具体的使用方法有以下两种:
- 通过link标签:
<link rel="stylesheet" type="text/css" media="screen and (max- 479px)" href="testcssbywidth1.css" />
示例代码代表当当前屏幕宽度小于479px的时候,加载testcssbywidth1.css文件来渲染页面。
- CSS中直接设置:
@media screen and (max-479px) {
/* 具体的CSS属性设置 */
}
对于Media Queries的一些常用属性,只对常用的几个做一个简单列举说明,其他的属性请各位自行查阅相关资料:
- width:描述终端设备显示区域的宽度,接受max/min的前缀;
- height:描述终端设备显示区域的高度,接受max/min的前缀;
- device-width:描述终端设备屏幕的宽度,接受max/min的前缀;
- device-height:描述终端设备屏幕的高度,接受max/min的前缀;
- orientation:描述终端设备处于横屏还是竖屏的状态,取值分别为:landscape/portrait。
当我们调整浏览器大小的时候,上面通过媒体查询属性的操作就可以完成响应式Web设计的工作,但是这却不能满足移动终端的浏览器,因为移动浏览器默认页面是为宽屏幕设计的,所以会把他缩小来适应小屏幕,但是终端设备却无法识别正确的宽度,所以光靠媒体查询是解决不了移动终端设备的响应式Web设计的。这个时候就必须使用viewport的meta标签来做一系列的设置,同样,下面我只给出一个简单列举说明,有兴趣的同学可以参考一些网上资料进行深入性的研究。
正常我们需要响应式Web设计的页面,在页面中都要加上viewport的设置:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, target-densitydpi=device-dpi">
- width=device-width:控制viewport的宽度,可以指定固定的值或者特殊的值,如device-width(设备宽度)。但是这个么设置有一个弊端,因为这个设置只有在竖屏状态下有效,横屏状态下,返回的却还是和竖屏状态下一样的宽度。
- initial-scale=1.0:告诉浏览器初始化页面时不要对页面进行任何缩放的操作。
- maximum-scale=1.0:告诉浏览器阻止页面放大,但是这样一来也禁止了用户手动放大或缩小页面,怎么说呢,美好的东西也会存在缺陷吧。
- minimum-scale=1.0:告诉浏览器阻止页面缩小,同样带来上面的问题。
- user-scalable=no:告诉浏览器禁止页面缩放。
- target-densitydpi=device-dpi:分辨率的设置,通常可以取值:device-dpi(使用设备自身的dpi作为目标dp,不发生缩放)、high-dpi(使用高分辨率,中低分辨率场景下会相应缩小)、medium-dpi(使用中等分辨率,高低分辨率分别进行相应的放大和缩小,缺省值)、low-dpi(使用低等分辨率,中高分辨率相应放大)。
通过对viewport的设置,利用Media Queries的属性设置,你就可以做出响应式的Web页面。下面开始一步一步告诉你响应式Web设计怎么开始的:
-
允许网页宽度自动调整:
就是在网页的中追加viewport meta的定义。
-
选取一个标准开发出具体页面:
比如一个页面被要求对屏幕宽度为320px、480px、640px的三种场景下进行响应式设计,这个时候正常会选取320px下的标准先进行页面开发。
-
抽取最低标准下的CSS样式独立成外链样式文件:
将320px下的CSS样式全部抽取成外链样式文件,响应式设计的页面HTML代码中,不要有任何CSS定义的代码。
-
根据UEDMMs的视觉稿进行其他标准的CSS样式文件开发。
- 通过Media Queries属性设置来定义不同场景下加载不同的CSS样式文件。
通过以上几步之后,OK,你的第一个响应式Web设计的页面就正式完成了,那么下面就要开始测试了,当然你可以很老实的用每一种终端设备来进行测试,当然这个是有必要的,但是为了马上就能看到响应式设计的效果,我推荐一个工具(http://dfcb.github.io/Responsivator/)给你,试试吧,你会觉得很有快感的。
为什么现在这么很多网站都选择响应式Web设计呢?主要优势个人感觉有以下几个方面:
- 给用户更好的视觉呈现:
不同的屏幕下页面的呈现方式不一样,这样可以给不同终端的用户不同的视觉体验。
- 降低开发的成本:
响应式Web设计相对于定制开发还是APP开发,无论是从开发资源投入、开发工时等各个方面都节省了不少,正所谓省时省力省钱,何乐而不为呢?
- 入口只有一个:
不管你用什么终端访问网页,URL都是一个。