Responsive Web Design,翻译为自适应网页设计或响应式网页设计。

今天,智能手机和平板电脑等移动设备的普及程度令人难以置信,智能手机都白菜价了,几百块钱就能入手一部功能强劲的Android手机。人们通过这些移动设备来浏览网页的频率和时间大有赶超传统桌面设备的趋势,这些设备已经成为了互联网的最常见的终端。

不同尺寸和分辨率的屏幕给了网站开发设计者不少麻烦。很多网站的解决方法,是为不同的设备提供不同的网页,比如专门提供一个mobile版本,或者iPhone / iPad版本。这样做固然保证了效果,但是比较麻烦,同时要维护好几个版本,而且如果一个网站有多个portal(入口),会大大增加架构设计的复杂度。

2010年,Ethan Marcotte提出了“Responsive Web Design”这个名词,指可以自动识别屏幕宽度、并做出相应调整的网页设计。使网站的页面布局能够根据不同设备和分辨率进行自动调整。

 

自适应网页的实现

一、 在网页代码的头部,加入一行viewport元标签

<meta name="viewport" content="width=devide-width, initial-scale=1" />

viewport是网页默认的宽度和高度,上面这行代码的含义是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。

二、不使用绝对宽度

由于网页会根据屏幕宽度调整布局,所以不能使用绝对宽度的布局,也不能使用具有绝对宽度的元素。

具体说,CSS代码不能指定像素宽度:

width:xxx px;


只能指定百分比宽度:

width:xx%;


或者

width:auto;

 

三、相对大小的字体

字体不能使用绝对大小(px),只能使用相对大小(em)

例:

body {
    font: normal 100% Helvetica, Arial, sans-serif;
  }

small {
    font-size: 0.875em;
  }

 

字体大小是页面默认大小的100%,即16像素。

small元素的大小是默认大小的0.875倍,即14像素(14/16=0.875)。

四、流动布局

即各个区块的位置都是浮动的,不是固定不变的。

例:

.main {
    float: right;
    width: 70%; 
  }
.leftBar {
  float: left;
  width: 25%;
}

 

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

另外,绝对定位(position: absolute)的使用,也要非常小心。

五、选择加载CSS

自适应网页设计”的核心就是CSS3 Media Query,它的意思就是,自动探测屏幕,然后加载相应的CSS文件。

CSS2.1定义了Media的部分,包括类型、组别和规则等。CSS并非为了显示器而创造,而是应用于各种各样的媒体,比如常见的显示器,越来愈多的手持设备,可能略显过时的电视机等等。

而 Media Queries 的引入,其作用就是允许添加表达式用以确定媒体的情况,以此来应用不同的样式表。换句话说,其允许我们在不改变内容的情况下,改变页面的布局以精确适应不同的设备,以此加强体验。

例:

<link rel="stylesheet" type="text/css" media="screen and (max-device-width: 400px)"   
  href="tinyScreen.css" />

 

上面代码的意思就是,如果屏幕宽度小于等于400像素(max-device-width:400px),就加载tinyScreen.css文件。

参考:

http://www.ruanyifeng.com/blog/2012/05/responsive_web_design.html

http://tech.hexun.com/2013-03-01/151612165.html

http://www.blueidea.com/tech/web/2010/7912.asp

本文+一个实例:http://www.boyige.tk/blog/?p=384