如何做互联网产品的响应式设计

作为全球先进的科技巨头,Google一直推崇响应式网页设计,并在今年的4月21日发布了重大的更新,目的是提高响应式在移动终端上的运行效率。尽管在更新中没有明确表明你必须使用响应式设计。只是简单的提示响应式设计拥有不错的UX和优越的性能,是移动设计方面的一个不错的选择。

考虑到这一点,让我们一起来测试一下“响应式设计”与“自适应设计”在性能和用户体验上各自的利弊。

自移动终端设备全面普及后,争论最为激烈的是我们在响应式设计,自适应设计和独立的手机网站(拥有独自的M.URL)该做何选择。基于本文章的讨论重点,我们先避开独立的手机网站不谈,因为它似乎不太受设计师和企业的欢迎,可能是因为它必须得单独创建的原因吧。(前期的开发和后期的维护成本都很大)

两者的区别?

首先,响应式和自适应最为关键的区别是什么呢?

简而言之,响应式就相当于液体,它可以自动适应不同尺寸的屏幕,无论你的设备尺寸多么奇葩。响应式使用CSS media queries的方法,根据目标设备自动改变风格如显示类型,宽度、高度等,这能很好解决不同屏幕尺寸的显示问题。

而自适应设计是基于断点使用静态布局,一旦页面被加载就无法再进行自动适应,自适应会自动检测屏幕的大小来加载适当的工作布局,也就是说,当你要采用自适应设计网站时,你得一个一个设计6种常见的屏幕布局。

1.320

2.480

3.760

4.960

5.1200

6.1600

显然,自适应设计需要做更多的工作,你必须至少设计6种常见的布局。而响应式设计可以更好地适应复杂的媒体设备要求,能很好地解决显示和性能问题。

特别是后者,这几年有着诸多的争议。因为许多网站提供的是完整的桌面模型,即便没有在移动端加载,但也会明显拖慢网站的速度。为了解决这一问题,我们可以用CSS3 的media queries解决方案,但会有一些折衷,因为响应式网站无法达到专门的移动网站那样快。

为什么使用自适应设计?

自适应可用于改造现有的网站使其更好地适应移动端。这使你的设计可控制和开发多个特定的视图。你开发视图的数量完全取决于你,你的公司和全面的预算。然而,它也提供了一定量的控件(例如在内容和布局上),如此你便无须使用响应式设计。

通常,你首先会设计一个低分辨率视图,制定你自己的方法确保设计不会被内容所限制。

正如前面所提到的,它那六个标准的设计布局。然而,你可以通过查看你网站,分析最为常用的设备,然后决定这些视图该如何设计。

如果你想在scratch上从头设计一个自适应网站也行。从最低的分辨率开始设计,制定你自己的方法。接着你可以用CSS3 的media queries扩展更高分辨率的布局视图。当你设计多种分辨率时你会发现,在改变窗口大小的时候将会“跳出”布局。

自适应网站可以用于设计和开发一个拥有多个自适应视图的网站。所以这种设计通常用于改造网站。

为什么使用响应式设计?

现在绝大多数网站都使用响应式设计,它适合缺乏经验的设计师和开发人员使用。可用的主题可以直接从CMS系统(如Wordpress,Joomla和Durpal)获取。

相比自适应网站,响应式网站省去了很多的控件,同时也省去了不少建立和维护的功夫。响应式布局就是一种流体,在按百分比缩放时也能相当的流畅。这也可能再次导致“跳出”当你在调整窗口大小时。如下图,下图现实的是一个流体布局,设计师使用百分比缩放时,视图将会被自动地调整。

使用响应式设计,你要记住所以的布局。这当然可能会使过程混乱,并且使设计更加复杂。这就意味着你应该专注于中等分辨率的视图,然后再用media querie调整为更低或更高的分辨率。

所以通常的做法是,在一个新的项目中使用响应式设计,在后期的改造中使用自适应设计。

再三思考

正如前面所讨论的,响应网站会在网站速度有所弊端(如果他们没有正确地实现)。

响应式在编码时要求也比较严格,以确保适应每块访它的屏幕。然而额外的工作也是值得商讨的,因为自适应设计要求为每一个布局单独开发和维护HTML和CSS代码。修改自适应网站也相当麻烦。因为当它实现的时候你得确保每一个功能(如SEO,内容和链接)能正常运行。

当然,你应该也要考虑用户体验。因为响应式基本上打乱了周围的内容以确保流畅符合设备窗口,你需要特别注意的是视觉层次结构设计,因为它周围的内容已被打乱。

根据Amy Schade的观点,响应式设计往往会造成另外一个难题,那就是如何重组大页面的元素以适应既小有长的页面,反之亦然。然而,单是确保元素适应页面是远远不够的。为了响应式设计更加成功,设计也必须确保屏幕的分辨率和尺寸能够适应。

所以,无论你采用哪种技术都没有捷径可言,都需要确保所创建的网站能适应所有的屏幕。响应式稍占优势,你无须花大量的时间在网站的维护上。

哪种技术更优越?

归根结底,最重要的是要考虑你用户属于哪类群体,不管你采用哪种设计方式,一旦你知道他们的习惯,知道他们更倾向于用什么设备访问该网站,你在设计你的网站时该采用哪种方式,哪种布局,想法自然会涌现出来。

很大程度上还取决你是现有的网站还是一个新项目。响应式设计已成为首选的设计技术和思想,现在有1/8的网站采用响应式设计(虽然这数字不及自适应设计)。响应式设计增长迅猛,几乎已经达到作为独立移动网站的相同水平。

记住这点,如果仅仅是考虑屏幕的兼容问题,可以有把握的说,那响应式设计通常是首选技术。

然而,如果客户和公司存在预算,自适应设计可能是更好的选择。根据Catchpoint进行的一个测试,他们在Wordpress创建两个网站,一个使用标准的WP TwentyFourteen响应式主题,另一个使用一个名为Wiziapp的插件。

插件基于他们访问该网站的设备向用户提供了移动主题,还提供了高级的配置选项,这样就可以进一步简化整个流程。

结果加载所用的时间如下表:

还应该强调一点,这没有进行任何优化。但这确实表明,响应式网站需要下载桌面所需的东西。如此表明,主题并不能提供很好的性能。

再次强调一下,media queries可以克服这个问题。至于为什么使用响应式设计,上面就是一个很好的例子。然而流行并不代表是最好的。在最好的东西出现之前,我们很难知道我们能做什么,除了学习如何正确的代码规范和实现一个很好网站。

结论:

响应式设计将会保持受欢迎的趋势,这可能是因为我们还没有找到一个更好解决重大维护和适应性要求。自适应设计也还没有灭亡,尽管不太受程序员的待见。有一点是肯定的,我们将会看到一些改进,完善现阶段所出现的问题。替代响应式设计的技术也在不远将来浮出水面。

 

1412999708958

去年上半年,我开始着手推动项目中响应式设计的落地。以官网优化需求为契机,主动去做了响应式的页面设计,也说服了产品、设计和开发的相关同事一起把它上线落实。但不幸的是,由于各种方面的原因,比如,生搬硬套的PC模块,无差异化的设计使得移动端阅读不佳,导航兼容性有限等等原因,上线几个月后又悄然下线。我不禁反思,项目中是否应该推行响应式?今年年初重新启动了全站响应式项目,从产品、交互、视觉到开发,各个角色全方面参与了响应式项目,最终门户的页面实现全面响应式。在项目过程中有技术沉淀,也有不少的思考,也就有了以下的文字。文章的内容围绕四个方面,响应式的概念,实践方法,一些案例,以及一些看法。

概念

Ehan Marcotte 为A List Apart写过一篇介绍型的文章 <响应式网页设计> 。文中讲到响应式的概念源自响应式建筑设计,即房间或者空间会根据其内部人群数量和流动而变化。

最近一门新兴的学科“响应式建筑(responsive architecture)”开始在探讨物理空间根据流动于其中的人进行响应的方法。建筑师们通过把嵌入式机器人与可拉伸材料结合的方法,尝试艺术装置和可弯曲、伸缩和扩展的墙体结构,达到根据接近人群的情况变化的效果。运动传感器与气候控制系统相结合,调整围绕人们周围的房间的温度以及环境照明。已经有公司制造了“智能玻璃技术”,当室内人数达到一定的阀值时,它可以自动变为不透明状态,为人们提供更多隐私保护。

Web响应式设计的概念与之也非常相似。在如今技术飞快发展的时代,一向是以快论英雄,设备和分辨率日新月异,就以分类相对明晰的iPhone为例,就有多达4种的分辨率和屏幕尺寸,更别提厂商蓬勃发展的安卓机领域。因此,为每种设备或者特定设备分辨率制定相应的独立版本是非常费时费力的事情。

Web响应式设计的理念,应当是,页面可以根据用户的设备环境,包括系统,分辨率,屏幕尺寸等等因素,进行自发式调整,提供更适合当前环境的阅读和操作体验,对已有和未来即将出现的新设备有一定的适应能力。

实践

有了概念,一定要谈谈实现的方法。类似于响应式建筑,Web页面也有对应关键因素。

  • 可弯曲、伸缩、扩展的墙体结构——可扩展的布局;
  • 运动传感器——MediaQuery;
  • 气候控制系统——栅格;
  • 艺术装置——css等等。

以上给了我写文章的脉络结构灵感,于是先从最基础的布局谈起。

可扩展的布局

有一种流体布局的概念在早起web兴起的时,就开始盛行了。它的概念是说页面会根据浏览器窗口的变化进行更改,网站可以通过维护一套代码,保质一致性的设计。我这里强调的可扩展的布局也是基于这个概念,只是现在的方法多种多样,因此要强调页面布局的可扩展性。

可扩展的布局途径有很多,比如常见的百分比布局,以及一直未成为标准的栅格布局等等。

框架

就从这框架来说,以一个常见的可扩展的三栏布局为例,就有数十种方法,这里抛砖引玉举几个例子。

0

方法1:

1

Demo1

方法2:

2

Demo2

方法3:

3

Demo3

方法4:

4

Demo4

方法5:

5

Demo5

方法6:

6

Demo6

方法7:

7

Demo7

方法8:

8

Demo8

方法9:

9

Demo9

除了上述总结的几种,还有更多更多的方法。两栏布局同理就不赘述。

此外W3C也有一个栅格化布局(Grid Layout)的规范,这个布局是基于两维栅格系统设计的,可以轻松按照我们的意愿改变页面的设计。它与Flexbox配合效果更佳。但目前仍处于草案阶段。翻看了W3C的最新草案内容,对Grid Layout的使用方法和原理简单介绍下。

1)定义grid:

首先在grid item外的父级容器上定义display: grid.

g1

g2

Values:

  • grid – 定义block-level的栅格;
  • inline – 定义 inline-level的栅格

2)一些相关概念:

  • grid lines – 是横向和纵向划分grid的线,它可以一朝数字顺序被指定,也可以用用户制定的名字被指定。

g3

  • grid tracks – 指的是一个grid列或者行之前的区域,换而言之是两个相邻的grid lines之前的空间。下图是第二行和第三行之间的grid tracks。

g4

  • grid cells – 一个grid cell指的是grid中最小的单位。

g5

  • grid areas – 是用来展现一个或多个grid item的逻辑空间。它被四条grid line包围。

g6

3)grid item 属性

了解了一些基本概念后,就可以更加绒里理解相关的grid item属性。

  • grid-column-start
  • grid-column-end
  • grid-row-start
  • grid-row-end

这四个属性中,grid-column-start和grid-row-start指明区域起始线,grid-column-end和grid-row-end指明区域结束线。这四个属性均有以下四个值可取。

Values:

  • <line> – 可以是一个数字,代表的是 grid line
  • span <number> – 该项会横跨所提供的数字个grid tracks
  • span <name> – 该项会横跨直到碰到下一个指定名字的grid line
  • auto – 自动或者默认属性

举个例子:

g7

代表的区域就是:

g8

除以上提到,grid还拥有更多的属性,使之可以定义grid item的宽高,间隙,内部自适应的方式,对齐方式等等。更多属性可以参考W3C文档

4)浏览器支持:

令人遗憾的是,浏览器的支持度还未尽人意,未来在UA上获取更多支持才是Grid发展的根本。

grid

框架搭建好,才仅仅是响应式的开始。但是俗语有云:Well begun is half done.  响应式从做好的布局开始。

文章由PM28网编辑,作者:海阁,如若转载,请注明出处:http://www.pm28.com/471.html欢迎投稿

联系我们

在线咨询:点击这里给我发消息

邮件:403567334@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息