Categories


Tags


自适应网页设计(Responsive Web Design)

随着3G的普及,越来越多的人使用手机上网。

移动设备正超过桌面设备,成为访问互联网的最常见终端。于是,网页设计师不得不面对一个难题:如何才能在不同大小的设备上呈现同样的网页?

自适应网页设计(Responsive Web Design) 浏览器 设计师 好文分享 第1张

手机的屏幕比较小,宽度通常在600像素以下;PC的屏幕宽度,一般都在1000像素以上(目前主流宽度是1366×768),有的还达到了2000像素。同样的内容,要在大小迥异的屏幕上,都呈现出满意的效果,并不是一件容易的事。

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

于是,很早就有人设想,能不能"一次设计,普遍适用",让同一张网页自动适应不同大小的屏幕,根据屏幕宽度,自动调整布局(layout)?

自适应网页设计(Responsive Web Design) 浏览器 设计师 好文分享 第2张

一、"自适应网页设计"的概念

2010年,Ethan Marcotte提出了"自适应网页设计"(Responsive Web  Design)这个名词,指可以自动识别屏幕宽度、并做出相应调整的网页设计。

他制作了一个范例,里面是《福尔摩斯历险记》六个主人公的头像。如果屏幕宽度大于1300像素,则6张图片并排在一行。

自适应网页设计(Responsive Web Design) 浏览器 设计师 好文分享 第3张

如果屏幕宽度在600像素到1300像素之间,则6张图片分成两行。

自适应网页设计(Responsive Web Design) 浏览器 设计师 好文分享 第4张

如果屏幕宽度在400像素到600像素之间,则导航栏移到网页头部。

自适应网页设计(Responsive Web Design) 浏览器 设计师 好文分享 第5张

如果屏幕宽度在400像素以下,则6张图片分成三行。

自适应网页设计(Responsive Web Design) 浏览器 设计师 好文分享 第6张

mediaqueri.es上面有更多这样的例子。

这里还有一个测试小工具,可以在一张网页上,同时显示不同分辨率屏幕的测试效果,我推荐安装。

二、允许网页宽度自动调整

"自适应网页设计"到底是怎么做到的?其实并不难。

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

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

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

所有主流浏览器都支持这个设置,包括IE9。对于那些老式浏览器(主要是IE6、7、8),需要使用css3-mediaqueries.js。

<!--[if  lt IE 9]>

<script  src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script>

<![endif]-->

三、不使用绝对宽度

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

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

width:xxx px;

只能指定百分比宽度:

width: xx%;

或者

width:auto;

四、相对大小的字体

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

body {

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

}

上面的代码指定,字体大小是页面默认大小的100%,即16像素。

h1 {

font-size: 1.5em;

}

然后,h1的大小是默认大小的1.5倍,即24像素(24/16=1.5)。

small {

font-size: 0.875em;

}

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

五、流动布局(fluid grid)

"流动布局"的含义是,各个区块的位置都是浮动的,不是固定不变的。

.main {

float: right;

width: 70%;

}

.leftBar {

float: left;

width: 25%;

}

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

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

六、选择加载CSS

"自适应网页设计"的核心,就是CSS3引入的Media Query模块。

它的意思就是,自动探测屏幕宽度,然后加载相应的CSS文件。

<link rel="stylesheet" type="text/css"

media="screen and (max-device-width: 400px)"

href="tinyScreen.css" />

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

<link rel="stylesheet" type="text/css"

media="screen and (min-width: 400px) and (max-device-width: 600px)"

href="smallScreen.css" />

如果屏幕宽度在400像素到600像素之间,则加载smallScreen.css文件。

除了用html标签加载CSS文件,还可以在现有CSS文件中加载。

@import url("tinyScreen.css") screen and (max-device-width: 400px);

七、CSS的@media规则

同一个CSS文件中,也可以根据不同的屏幕分辨率,选择应用不同的CSS规则。

@media screen and (max-device-width: 400px) {

.column {

float: none;

width:auto;

}

#sidebar {

display:none;

}

}

上面的代码意思是,如果屏幕宽度小于400像素,则column块取消浮动(float:none)、宽度自动调节(width:auto),sidebar块不显示(display:none)。

八、图片的自适应(fluid image)

除了布局和文本,"自适应网页设计"还必须实现图片的自动缩放。

这只要一行CSS代码:

img { max-width: 100%;}

这行代码对于大多数嵌入网页的视频也有效,所以可以写成:

img, object { max-width: 100%;}

老版本的IE不支持max-width,所以只好写成:

img { width: 100%; }

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

img { -ms-interpolation-mode: bicubic; }

或者,Ethan Marcotte的imgSizer.js。

addLoadEvent(function() {

var imgs =  document.getElementById("content").getElementsByTagName("img");

imgSizer.collate(imgs);

});

不过,有条件的话,最好还是根据不同大小的屏幕,加载不同分辨率的图片。有很多方法可以做到这一条,服务器端和客户端都可以实现。

(完)

文章来源:阮一峰的博客

来源:卢松松博客


Public @ 2010-08-15 15:20:30

移动端网站建设如何提高资源的易用性

1. 简化页面设计和网站结构,减少用户步骤和页面数量。移动端设备的屏幕相对较小,用户进行复杂操作时需要消耗过多时间和精力,容易让用户疲惫和焦虑,进而引发心理抗拒。因此,设计一个简单而直接的页面和结构,可以有效提高用户易用性。 2. 通过可视化和特定颜色来呈现设计。移动设备的尺寸限制视觉效果的表现,而特定的颜色和漂亮的图标能够有效地引导用户,增加用户流量的转化率,解决包括使用过程中的迷惑和转移的问

Public @ 2023-03-31 19:00:51

移动互联网如何获取精准流量

这个案例的最起源,是因为秦刚日记里的一句话PC时代,做网站是写给百度看的,移动互联网时代,是写给用户看的。这句话让我思维一下就打开了。回想起兼职做网站这5年来,每时每刻都在想百度要什么,很少想用户想看什么。今天我到浙江湖州一家产值过亿的企业做5S管理项目调研,这家公司为什么找到我?因为我在福建泉州做5s管理咨询项目的时候,把项目日记写成连载形式,连续写了20篇,还在继续写。里面都是如何推进这个项目

Public @ 2015-07-25 16:20:30

自适应网页设计(Responsive Web Design)

随着3G的普及,越来越多的人使用手机上网。移动设备正超过桌面设备,成为访问互联网的最常见终端。于是,网页设计师不得不面对一个难题:如何才能在不同大小的设备上呈现同样的网页?自适应网页设计(Responsive Web Design) 浏览器 设计师 好文分享 第1张手机的屏幕比较小,宽度通常在600像素以下;PC的屏幕宽度,一般都在1000像素以上(目前主流宽度是1366×768),有的还达到了2

Public @ 2010-08-15 15:20:30

使用自适应的方式隐藏一些链接算作弊吗

因为某种历史原因,我们公司的网站不能做独立的移动端,只能用PC站做自适应。现在我对移动端做了很多修改,主要是隐藏了很多不适合在移动端显示的内容,大概占全部内容的3分1,包括友链和很多内链。这样有可能会被百度惩罚吗?回答:自适应设计的页面在移动端适当隐藏一些不适合手机显示的内容是正常的,不会被百度惩罚。但不要隐藏主体内容和重要链接,不然有cloaking之嫌。隐藏内容的三分之一好像挺多的,那些隐藏的

Public @ 2021-11-14 15:20:30

更多您感兴趣的搜索

0.444244s