响应式网页设计和移动互联网

文章简介:响应式网页设计被提出以来,争论就不断,其实核心问题只有两个个:太多的资源请求和有限的终端支持之间的矛盾、响应式的网页设计和移动终端在用户体验和视觉风格上的差异。

个话题最近很火爆,我也一直在关注,响应式网页设计和移动互联网密切相关,并因移动终端的丰富和普及而兴盛,并且是一个颇具争议的话题,我今天将和大家探讨下。

上周写了个简单的ppt在组内大概介绍了下,感兴趣的话可以先看下这个PPT。

移动互联网的现状和未来

在说到这个话题前,我们先看下网页设计和前端开发的现状:

  1. 全球有超过53亿手机用户(包括传统手机)
  2. 国内3G用户超过1亿
  3. iPhone4手机在2010年出货量超过3000万部;
  4. iPhone 4S上市前3天卖掉400万部;
  5. Android手机每天激活超过50万部;
  6. iPad出货量已经超过2.5亿部;
  7. 预计到2015年,移动互联网的数据流量将超越桌面端的流量。
  8. 。。。

嗯,大家也许已经开始注意到,自己和身边的朋友也都越来越多的用上了iPhone或者android手机或平板——一两年前我们预料的移动互联网时代即将来临,现在已然实现了——我们正处在移动互联网快速发展的时代——已经不再是起步阶段了。

那么,什么是响应式网页设计?

响应式网页设计是Ethan Marcotte在去年5月份提出的一个概念,简而言之,就是一个网站能够兼容多个终端——而不是为每个终端做一个特定的版本。这个概念可以说是是为移动互联网而生的!

或许大家之前会注意到,有很多知名网站都推出了iPhone或针对只能手机的专门网站,比如3g.qq.com、m.taobao.com、ipad.xxx.com等等。。。甚至前端观察之前也尝试过用wordpress插件实现m.qianduan.net的移动网站。

那么问题就来了——我们要为每一个设备做一个单独的网站吗?来让网站在每个设备中得到相应的视觉风格和操作体验?

这样势必就要增加很多的工作量,而且很多还是重复的。

我们在做页面的时候,一般很强调模块化的概念,我们要求一个合格的模块要能够“可扩展、无侵染”,它要能够用在任何地方都能够正常的显示。响应式网页设计与此类似——网站在任何设备中都能够正常适配,而不用为每个设备单独做个子网站!

但是,产品经理和设计师可能还是会要求网站在各个浏览器里面表现要一模一样,甚至要像素还原——WTF!不同的浏览器本身的功能、行为和处理方式都不一样,为什么要表现完全一样?!

let the browser flow…

怎么做?

其实响应式网页的实现很简单,都是大家熟悉的技术。

media query(媒体查询)

因为现在主流的智能终端都是基于iOS和Android的,而它们自带的浏览器都是基于webkit内核,所以我们可以完全使用viewport属性和media query技术实现网站的响应性:

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

后面的initial-scale表示初始缩放,maximum-scale表示最大缩放比例,1意味着不能进行缩放。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* for 240 px width screen */
@media only screen and (max-device-width:240px){
    selector{
    }
}

/* for 360px width screen */
@media only screen and (min-device-width:241px) and (max-device-width:360px){
    selector{
    }
}

/* for 480 px width screen */
@media only screen (min-device-width:361px)and (max-device-width:480px){
    selector{
    }
}

当然依靠屏幕宽度来进行适配是最简单的方法,media query有很多参数可以使用比如orientation、aspect-ratio等,不太了解的可以查看这篇详细的介绍。

其实,media query是响应式网页设计中被用到最多的技术。

fluid grid(流体网格)

很多项目都在使用网格技术(或者叫栅格),前几年960.gs很流行,但是随着屏幕分辨率的普遍提升,它已经不太适合当前需求了,于是最近几年fluid grid开始逐渐多了起来,这种技术其实也很简单,只是将格栅的单位由px变成%,用百分比来控制页面每列的宽度,从而实现宽度的自适应。

使用流体网格的网站能够根据屏幕宽度自动调整页面中每列的宽度,从而保证页面的完整展现和基本功能。这也是一种不错的方法。

flex box

flex box是css3中的新技术,它很强大,可以实现很多我们之前无法想象的自适应布局。

有时我们希望网站能够以webapp的外观呈现给手机用户,flexbox是个不二的选择。

比如,要实现这样的简单结构:

它很像一个app的结构,头部和底部固定,中间高度自适应,用flexbox可以简单实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
.flex_wrap{
	height:100%;
	display: box;
	display: -moz-box;
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-moz-box-orient: vertical;
	box-orient: vertical;
}
.flex_bd{
	box-flex:
					1;
	-moz-box-flex:
					1;
	-webkit-box-flex:1;
	background:#E7E7E7;
	overflow-y:auto;
}
.flex_hd{
	background:#16364C;
	height:30px;
	line-height:30px;
	text-align:center;
	color:#FFF;
	font-weight:700;
	font-family:14px;
}
.flex_ft{
	background:green;
	height:30px;
	line-height:30px;
	text-align:right;
}

HTML代码:

1
2
3
4
5
6
7
8
9
10
11
12
<div
						class="flex_wrap">
	<div
						class="flex_hd">前端观察</div>
	<div
						class="flex_bd">
		<p>这里是主内容区</p>
		<p>这里是主内容区</p>
	</div>
	<div
						class="flex_ft">
		<a
						href="http://www.qianduan.net/about"
						title="关于我们">关于我们</a>
		<a
						href="http://www.qianduan.net/copyright"
						title="版权声明">版权声明</a>
		<a
						href="http://www.qianduan.net/sitemap"
						title="网站地图">网站地图</a>
	</div>
</div>

虽然这里还会有点儿问题,比如主内容区域内容太多会被隐藏掉,因为android webkit和iOS 5之前的mobile safari均不支持overflow:scroll属性,但是这个问题还是很好解决的,比如在里面嵌套一个子容器,用js来给定个高度并使用定位来实现滚动条从而完整展示内容,或者直接使用iscroll等js库来实现。好消息是,iOS5中safari开始支持overflow:scroll了。

不足之处

如果你关注网站性能之类的话,可能已经发现了一些问题:

  • 加载很多不需要的资源,比如多余的图片和样式内容
  • 带宽限制
  • 移动终端的内存和CPU限制
  • 图片大小和屏幕大小不匹配

嗯,任何一个方案都不是完美的,但也不会很糟糕。下面我们会提到一些可行的优化方案:

HTML5本地存储

对于支持HTML5 appcache /manifest特性的浏览器,我们可以将一些不常改动的静态资源存储到本地,比如css文件,css中用到的图片,以及一些js文件等:

1
2
3
4
5
6
7
8
9
10
CACHE MANIFEST
NETWORK:
/*

CACHE:
img/bg.jpg
img/days.otf
slideshow.js
slideshow.css
classList.js

然后将文件保存为manifest格式,并在HTML标签中引入即可:

<html manifest="responsive.manifest">

这样,用户在第一次访问的时候会慢一点儿,但是后续访问会很快,3G网络中也能为用户节省带宽。

移动设备优先

一种新的设计流程是,先为移动设备设计界面,然后将PC端作为一个扩展。

这样做的好处是显而易见的,移动终端不会加载多余的资源,也不会因为PC端的样式而重绘页面,同时也不会影响PC端的表现。

流体图片(fluid image)

页面中的图片有时会比手机/平板的屏幕(viewport)宽,这样会将页面容器撑开,但是移动浏览器又不能scroll,结果图片被切掉一部分,然后还会有一部分内容被隐藏掉,用户看不到。

解决这个问题的方法很简单,将img的最大宽度设置成100%就可以了:

img{max-width:100%}

嗯,这里的前提是,没有给img标签设置宽度和高度,否则显示会有问题。另外不建议直接设置width=”100%”,因为会把小图拉大,模糊显示。

同理,video标签和iframe标签的宽度也可以这样做,而且最好不要使用iframe,宽度是个问题,性能也是一个方面吧。

CSS3 image

这个方法有些惊艳

我们都知道可以用::before和::after伪元素+content属性来动态显示一些内容或者做其它很酷的事情,而且在CSS 2.1中即被支持。不过content属性在CSS 2.1中只能用于这两个伪元素中,而在CSS3中,任何元素都可以使用content属性了,这个方法就是结合css3 的attr属性和HTML自定义属性的功能:

<img
			src="image.jpg"

	data-src-600px="image-600px.jpg"

	data-src-800px="image-800px.jpg"
			alt="">

然后用media query来动态赋值:

1
2
3
4
5
6
7
8
9
10
@media (min-device-width:600px) {
	img[data-src-600px]
					{
		content: attr(data-src-600px,
					url);
	}
}
@media (min-device-width:800px) {
	img[data-src-800px]
					{
		content: attr(data-src-800px,
					url);
	}
}

当然,这种方法也有不足之处,比如PC端宽屏幕需要加载两个图片文件,然后我们也要为此准备多张图片文件等。

pre标签

有的网站,比如,像前端观察这样的技术博客,会用pre来显示源代码,而浏览器对pre标签默认设置white-space:pre,这样,代码就不会换行,从而撑开子容器,造成内容被隐藏的问题:

右边的文字被隐藏掉了。

解决方法很简单:

pre{
	white-space:pre-wrap
	word-break: break-word;
	word-wrap: break-all;/*如果要兼容IE,可以加上这句,连续字母断行的问题伤不起啊。。。。*/
}

当然,不只是pre标签,关键是white-space和word-break属性的值。

嗯,主要的技术和技巧其实就这些,大家不会陌生。下面是一些比较有用的工具什么的:

响应式网页设计工具与资源

国外在响应式网页设计上已经走的很远了,已经有很多工具和资源供我们参考和使用:

CSS 框架

  • 320 and Up
  • Mobile Boilerplate
  • Golden Grid System
  • Gridless
  • Less Framework
  • 1140 CSS Grid System
  • Fluid 960 Grid System
  • SimpleGrid
  • Skeleton

实用工具

  • Respond.js,让IE6-8支持meidia query
  • Responsive Design Testing 简单而方便的测试网站的响应性的工具,输入网址即可看到网站在不同分辨率下的表现
  • Resize My Browser 缩放浏览器工具,不过不支持chrome和opera浏览器
  • Media Query Bookmarklet 顾名思义,这是一个关于media query的书签工具
  • ProtoFluid 在线查看和调试网站对移动终端兼容性的工具,很赞
  • ScreenFly 和ProtoFluid类似
  • responsivepx 更直观的测试网站对不同分辨率的适配性

争论和总结

响应式网页设计被提出以来,争论就不断,其实核心问题只有两个个:太多的资源请求和有限的终端支持之间的矛盾、响应式的网页设计和移动终端在用户体验和视觉风格上的差异。前者不能容忍在弱小的手机/平板上通过龟速的3G/2G网络来加载一个笨重的PC端页面,而后者纠结响应式网站不像手机网站。

我的想法是,具体问题具体分析,比如,强内容的网站,完全可以尝试响应式网站,而重视觉和功能的网站,则可以尝试建立一个独立的移动网站。

另外,显然,响应式网页设计的大部分技术,是可以用在WebApp开发中的。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索终端多标签
, 终端
, iscroll
, 网站
, 网页设计
, 移动互联网
, js缩放手机浏览器
, 移动单位css手机
, 区域设计pre显示标签pre
, 一个
宽度
响应式网页设计、响应式网页设计教程、响应式网页设计规范、响应式网页设计案例、html响应式网页设计,以便于您获取更多的相关知识。

时间: 2024-08-01 06:46:25

响应式网页设计和移动互联网的相关文章

国外15个优秀的响应式网页设计教程

响应式网页设计和移动互联网密切相关,并因移动终端的丰富和普及而兴盛,它的理念是页面的设计与开发应根据用户行为以及设备环境(系统平台.屏幕尺 寸.屏幕定向等)进行相应的响应和调整.随着越来越多的设计师正使用响应式设计技术,这里就将分享国外15个优秀的响应式网页设计教程,以供学习借鉴. Beginner's Guide to Responsive Web Design Responsive Design in 3 Steps Techniques For Gracefully Degrading M

响应式网页设计中24个杰出的作品范例

响应式网页设计(Responsive web design)是一种现代网页设计方法,其理念是页面的设计与开发应当根据用户行为以及设备环境(系统平台.屏幕尺寸.屏幕定向等)进行相应的响应和调 整.响应式网页设计和移动互联网密切相关,并因移动终端的丰富和普及而兴盛,并且是一个颇具争议的话题.这里就将为设计者们展示响应式网页设计中24个杰 出的作品范例. Reveal: A Responsive WordPress Theme hanging up the moon Sunday Best Desig

移动互联网时代:响应式网页设计已成为大势所趋

我们正处在移动互联网快速发展的时代,智能手机和平板也越来越普及,有些人甚至都到了没有智能手机或平板就无法过活的地步.智能手机和平板的普及,也就意味着越来越多的用户会通过移动设备访问互联网. 通过移动设备访问互联网的用户或多或少都有过这样的经历:有些网站压根就没有针对移动设备的网站,哪怕是有,大多都是不够"移动友好",阅读体验完全跟不上传统的Web版本;而且在不同的移动设备上,浏览体验也是大相径庭,让很多用户大为苦恼. 根据相关数据统计,到2015年,移动互联网的用户数量将会超过桌面用户

响应式网页设计:很全的响应式网页设计教程

文章描述:响应式网页设计考虑到多平台.多种屏幕尺寸的情况,能够优化多种设备的网络浏览体验. 响应式设计现在已经成为网页设计师学习的焦点.网页教学网发现群内有很多相关的讨论了,这说明我们平时接触该类案例越来越多.你会渐渐发现,我们身边越来越多的企业和客户关注到响应式网站,作为勤奋的设计师,我们怎么能不对它进行了解呢? 响应式网页设计考虑到多平台.多种屏幕尺寸的情况,能够优化多种设备的网络浏览体验.当你不知道用户使用什么设备,不知道用户的屏幕尺寸时,若想达到较优布局,可以采用响应式设计.在进行响应式

来和小伙伴一起学习响应式网页设计

  响应式网页设计 过去,上网需要一台电脑,一个猫. 现在呢,手机.平板.电视都可以上网. Responsive Web Design, 由Ethan Marcotte编写, A Book Apart出版,对响应式设计的原则进行了详尽的阐述. 多种设备均能支持联网,有利有弊: 好消息是,我们可以随时随地登入互联网. 坏消息是,设计师的工作量成倍的增加了,而且用户变得越来越挑剔,越来越不耐心. 在这种大环境下,响应式设计变成了主流. 响应式设计所带来的挑战 进行响应式设计,挑战有很多. 首先,设备

FROONT在线可视化响应式网页设计工具

  Froont是一个允许设计师在线设计响应式网页的工具,不需要程序员介入的设计编程工具,为设计师们提供了可视化的在线网页设计环境,绝对是响应式网页设计的利器.如果你还在为用PS画出网站在不同设备上的 demo 图,并和攻城师苦苦兼容各浏览器而懊恼的话,来试试Froont吧! 制作过程中,Froont会根据你的网页将呈现的设备:比如手机.平板.笔记本或者是宽屏电脑,自动调整页面布局,适应各个块之间的相对位置. 嗯,如果你有神马不懂的,可以看首屏那个视频,戳 Watch video 即可,了解后再

bootstrap响应式网页设计的9条基本原则!

bootstrap响应式网页设计是针对多屏幕问题的一个很好的解决方案,但从印刷的视角来看有点困难.没有固定的页面尺寸,没有毫米或英寸,没有任何的物理限制,无从下手. 为了desktop和mobile单独使用像素设计的方法也成为了过去,因为越来越多的设备都可以打开网站.因此,我们需要弄清楚bootstrap响应式网页设计的一些基本原则,接受流体网页,而不是与之相抗.为了让它保持简单,我们将着眼于布局(是的,响应式比它更复杂,如果你想了解更多,这是一个很好的开端.) 响应式 vs 自适应网页设计 它

让你精通响应式网页设计的15条建议(1)

响应式网页设计已经变成新的web标准,许多公司已经接受了这个挑战,并且已经建立起了专门的网页设计方案(比如只针对移动端的开发)或者已经开始试图解决跨平台的响应式网页设计方案.本文会带大家来看看一些实用的建议,以帮助你的设计过程,并使之变得更加高效. 1.计划 与往常一样,计划总是要放在第一优先级的.一旦你在纸上开始解决你的设计难题,你就已经准备好建立你的站点了. 2.充分利用好原型软件 推荐使用Adobe Edge Reflow,它能让你使用媒体查询,在程序内设置断点并设计适配桌面电脑.平板电脑

响应式网页设计:国外的很赞的响应式网页设计案例

文章简介:来欣赏一些国外的一些很赞的响应式网页设计,看看他们是如何实现对PC端浏览器和移动终端的全面支持的. 上一篇中我们了解了一下响应式网页设计是什么,现在趁热打铁,来欣赏一些国外的一些很赞的响应式网页设计,看看他们是如何实现对PC端浏览器和移动终端的全面支持的. 想要查看效果很简单,打开这些页面,然后缩放浏览器窗口就可以了--当然,要用chrome/safari/firefox/opera等浏览器,IE请绕道-- 当然,如果你有发现国内有好的类似设计 food sense Forefathe