PHP,DDD,CQRS,Event Sourcing,Kubernetes,Docker,Golang

0%

响应式与自适应的区别

6310d41cjw1em0lsear2xg20b408cn22

起初,网页设计者都会设计固定宽度的页面,最开始的电脑显示器分辨率种类不多,因为当时电脑本来就少,即使有变化也是 800 850 870 880。 后来随着显示器越来越多,以及笔记本的普及,这种方式的页面出现了问题。于是出现了一种新的布局方式宽度自适应布局。我们平时谈论的自适应布局,大多指的就是宽度自适应布局。 在这种布局下,出现了两派:

  • 百分比宽度布局
  • 流式布局

题主说的是第一派,宽度使用百分比,文字使用em。第二派的布局以 iGoogle 为代表(已经停止)。 再后来,浏览器大战 时代,firefox、Oparo、Chrome …… 出现,结束了 IE 一统江湖的局面,N 年没有更新的 IE6 发布了新版本,以前已 IE 为标准的 CSS 向 W3C 标准趋近,随后各种针对浏览器的 css hack 技术出现。 虽然浏览器这么多,但是响应式布局依然不是主流,人们还在使用 css hack 技术。注意我的用词——「不是主流」,虽然不是主流,不代表当时不被使用。 比如一向超前的伟大的 Google。当时没有响应式布局这个词语,但是慢慢出现了一个词——渐进增强,新词的出现总是伴随的旧词一起出现。就好比 3G 出现之前,没人管自己的手机叫 2G,所以,3G 和 2G 两个词是一起出现的(技术上当然2G技术先出现)。同理,渐进增强出现后,另一个词「优雅降级」也随之出现了。 词的意思可以自己看 wiki、Google,我只在这儿举一个例子,gmail 和 qqmail。 他俩的宽度都是 100%,都是自适应。但是: qqmail 就是 css hack 的完美体现,你用任何一个浏览器,几乎可以看到同一个样子的邮箱,腾讯的前端工程师们用各种 css hack 技术来展示邮箱页面,为的是统一的用户体验。 而 gmail 使用了渐进增强,你的浏览器越强,你看到的效果就越好,用户体验就越好。 再后来,就是大家都熟知的 Google 发布了 android,于是互联网大战从 PC 打到了手机。还有 HTML5 标准的发布。 手机虽然屏幕变小了,但是却提供了更丰富的功能。还记得以前用诺基亚上 QQ 的事儿吗?我们访问的是 3g.qq.com,当时我使用的是中兴的手机,访问 wap.qq.com,在后来的职能手机都是访问 m.qq.com。 不禁有人问「真的需要为每个手机分别设计一个网页吗?」、「真的需要为手机和电脑设计不同的网页吗?」,解决方法当然有很多种,可以看看 css zen garden 相信做过前端的都看过这个网站,一个神奇的网站。 最终的解决方案胜出者是响应式布局。 响应式布局被大家熟知的一个重要原因就是 twitter 开源了 bootstrap。Google 第一次完成了从先驱到烈士。 好了,上面介绍的是从从“自适应”到“响应式”,以下 Responsive design = RWD,Adaptive design = AWD。 先说共同点,两者都是因为越来越多的 移动设备( mobile, tablet device )加入到互联网中来而出现的为移动设备提供更好的体验的技术。用技术来使网页适应从小到大(现在到超大)的不同分辨率的屏幕。有人说,RWD 是 AWD 包含的一个子集。 RWD:Ethan Marcote 的文章是大家认为 RWD 的起源。他提出的 RWD 是采用 CSS 的 media query 技术,配合流体布局( fluid grids )和同样可以自适应的图片/视频等资源素材。以上所说,都是通过 HTML 和 CSS 就能完成的。一般来说,RWD 倾向于只改变元素的外观布局,而不大幅度改变内容。Jeffrey Zeldman 总结说,我们就把 RWD 定义为一切能用来为各种分辨率和设备性能优化视觉体验的技术吧。 AWD:Adaptive Design 是 Aaron Gustafson 的书的标题。他认为 AWD 在包括 RWD 的 CSS media query 技术以外,也要用 Javascript 来操作 HTML 来更适应移动设备的能力。AWD 有可能会针对移动端用户减去内容,减去功能。AWD 可以在服务器端就进行优化,把优化过的内容送到终端上。AWD 通常会牵扯到另外一个词 “progressive enhancement” 。 progressive enhancement(渐进增强):从针对最低端的,最低分辨率的设备的设计做起,逐步逐步为更高阶的设备增加功能和效果的做法。(换个角度说,也就是相当于为移动设备减去功能) RWD 和 AWD 在断点( break point )的区别: RWD 采用流体+断点,在断点之间,页面依然会随窗口大小自动缩放(通过 fluid grid ),直到遇到断点改变界面样式。相对的,AWD 只在针对几种分辨率(如1280,800,640,320px)进行优化,在断点之间的自动过渡比较少。 还有一种说法: RWD 一般来说需要在网页设计初期就开始(通常采用 mobile first 策略),所以旧的网站要做 RWD 很可能要完全重建。而 AWD 则采用保留现有桌面网站( desktop version )而对于更小的分辨率做针对性的优化(适应),这点对于很多老的网站来说很重要,因为重构成本太大。 另外,对于 mobile 用户的优化到底应该怎么做,有两方的说法各不相让。有人说,不应该因为用户使用的是 mobile device 就删去内容,限制他们的功能,应该平等对待。也有人说,正因为是移动设备,有其流量,性能,网速的局限性,用移动设备登录网站的目的也会更有针对性,要为 用户精简文字,精简最常用的功能放在首页,服务器端的优化才是真的针对 mobile 的优化。 最后: 在网上的各种说法里确实是有很多相互干扰相互矛盾的地方,但是其实技术都是摆在那里的。其实可以认为,AWD 在针对布局的优化中,可以采用 RWD 的策略,但是AWD 着力于更多其他的 JS 或者服务器上的优化,来强化移动端体验。 不用纠结于词汇,根据网站功能复杂度,预算和资源等,选择要使用的技术,从客户端的展现,到 JS,到服务器的优化等等。