响应式网站

2015-06-02
  • 1969
  • 0
        响应式网页,不像传统网页一套设计稿就完事,响应式设计本着内容优先移动优先的设计原则,先分析页面内容以及优先级,分析页面类型并且归类,到设计手机端框架,然后根据手机端框架扩展出平板和PC端的框架,最终抽取通用模块完成设计稿。设计稿出来了,我们首先要根据情况选择以何种方式实现响应式网站。
        响应式设计 (Responsive Web design)
        主要依靠前端css的媒体查询 Media Query, 百分比流式布局,我们可以在定义设备不同的尺寸下选择需要加载的样式。这样做有很多优点,PC端和移动端十分接近,令用户感到“熟悉”。设计元素易被反复利用,只需要维护一套CSS。但是问题也很明显,前端的开发成本大大提升,同时无论是针对桌面还是移动的CSS代码(甚至图片资源文件)都会被同等的下载到客户端(没有考虑移动端的网络优化),如果JS不写两套,桌面端的交互和移动端的交互很难针对平台作出差异。
        如果网站比较简单,属于偏重信息传达而轻交互的网站,那这个解决方案其实恰到好处,通过CSS解决就足够了。但是,如果我想要做更多的 「移动化设计」,比如 减少信息层级、增强手势操作等等,又该怎么办呢?下面说另一种响应各平台的方法,也是目前中大型网站比较常用的方法。
        服务器端RESS (Responsive Web Design with Server Side Components)
        通过服务器端组建的响应式网页设计。为了让设计拥有各个设备该有的体验,RESS 的本质还是服务器端动态的生成,返回 HTML、JS、CSS、图像等资源文件,但是只使用同一个 URL 就可以提供给移动端定制化更强的网页,同时还大大节省了网络资源。
        这样做还需要用JavaScript实现两套逻辑,来分别兼容鼠标键盘和触摸设备,通过 UA、特性检测在前端做设备判断,对资源进行异步加载,渲染不同模版。
        这样我们的网站确实已经可以很好的响应各个平台,但是,如此一来,后端开发成本上去了,前端开发成本也上去了,配合着估计产品、设计资源也都上去了,那我们为什么不干脆把移动设备网站和桌面设备网站分开呢!?但是这样也往往意味着要维护多个url,于是,我们还是得依靠前端或服务器端的一次 “响应”(设备检测),做 URL 重定向,才能将不同设备的用户带到那个为他们准备的网站。所以在我看来,PC端和移动端分开,只是狭义响应式设计的一种发展和延伸罢了。他们的界限没有,也并不需要那么清晰。
        至于如何选择,我觉得不是二选一,只是选择一个合适的度。