【原创】响应式网页设计基础【从零开始】

如今的互联网事业突飞猛进,可谓一日千里。响应式网页设计凭借其能为开发者提高开发效率,降低维护成本,提升用户体验等突出优势更是为Web 2.0时代掀起了又一股狂潮,致使无数开发者倾心致力于响应式网页设计。纷纷为响应式设计贡献自己的绵薄之力,当然各大软件制造上肯定不会放过如此良机,也纷纷推出各类响应式设计软件。理所当然不乏优秀之作:

  • Groundwork,一款开源的响应式设计工具,在Github上可以找到其项目源代码。Groundwork提供多套通用响应式页面模版,用于快速构建Web响应式应用程序。此外,它还提供丰富的UI组件,详情可以访问Groundwork官网
  • FROONT,一个网页版的响应式开发工具。提供在线编辑,布局调整,以及在不同临界值之间切换预览等响应式开发必备功能,还能导出html/css文件,实属强大的响应式开发工具,更具体的介绍请参看FROONT官网,注册并登录即可体验在线响应式开发。
  • Adobe Edge Reflow CC,由世界著名软件大户Adobe公司开发的响应式网页设计软件。和Adobe Dreamweaver、Adobe Photoshop等知名软件一样,Adobe Edge Reflow CC是一款桌面应用程序,配合Adobe Edge Inspect CC可在各种移动设备之间进行响应式实时开发调试,我认为这无疑是目前为止最好的响应式网页设计软件。
    接下来将对如何使用Adobe Edge Reflow CC进行响应式网页设计,以及使用Adobe Edge Inspect CC进行调试做详细介绍。

安装Reflow和Inspect

Adobe最新推出了Adobe Creative Cloud,用于管理所有Adobe软件,包括下载、更新等。界面如下:

Creative Cloud

如果已经安装过Adobe Creative Cloud,那么可以直接通过它下载并安装Reflow和Inspect。如果未安装过Adobe Creative Cloud,可以直接通过https://creative.adobe.com/products/reflow?promoid=KFKMR下载Adobe Edge Reflow CC,系统会自动提示下载安装Adobe Creative Cloud,Adobe Edge Inspect CC安装方法雷同,不做赘述。

Adobe Edge Reflow CC界面初识

Adobe Edge Reflow CC

Reflow 的用户界面如上图所示。从界面来看,目前的Reflow功能还很有限,比如:工具箱目前只有四个选项。但是,其强大之处不在于此,在于响应式的支持。下面我们一一来介绍各个部分。

首先,顶部灰色的一条菜单栏与其他软件没有太大差异,使用过windows系统的用户应该都很熟悉,不多废话。

接下来软件主体区域分为左右两个部分,左侧最上面一行是工具箱,如图所示包含四个工具,分别是 选择工具添加盒子添加文本添加图片

  • 选择工具,用于选择盒子,拖动改变位置,设置CSS样式等。
  • 添加盒子,用于在界面上创建一个布局盒子,编译后会对应生成一个 div 标签。
  • 添加文本,用于在盒子中创建文本输入区,编译后会对应生成一个 p 标签。
  • 添加图片,用于在盒子中创建图片元素,编译后会对应生成一个 img 标签。

介绍完这些工具,我发表一下自己对Reflow的个人看法。从目前Reflow提供的工具而言,Reflow对html结构的展现支持并没有Dreamweaver等编辑器强大,数完了也不过 divpimg 三个标签,对语义化html结构的支持可谓少之又少,因此,我认为Reflow完全是为响应式布局而生。而在使用Reflow完成响应式模块布局之后,模块内部的内容区域样式和结构的实现,还是需要借助于像Sublime Text或Dreamweaver等这类更专业的网页编程软件来实现。

右侧是软件最主要的区域,各个相应临界值下的个性化布局完全在这片区域中实现。截图中标出了右侧上部的彩色条为临界值标识区,这里的临界值并非固定不变的,完全可以根据用户需求定制,点击右侧的 添加临界值 的加号按钮,可以创建一个可左右拖动的三角标,通过左右拖动来确定临界值,非常的方便。

右侧下方是网格区域,用户可以在 view - Grid 菜单中设置网格属性。点击标尺上方各个临界值区域的彩色条纹,可迅速将画布调整至目标尺寸,然后针对不同尺寸,调整画布网格中的盒子的布局效果,当各个临界尺寸的布局都调整好之后,我们保存项目,点击 F12view - Preview in Chrome 在Chrome浏览器中预览相应效果。

添加临界值 的加号按钮下方还有一个叫 Edge Inspect CC 的按钮,主要用于结合Adobe Edge Inspect CC进行移动端的真机调试。Inspect启动前后效果图如下:

Adobe Edge Inspect CC

Adobe Edge Inspect CC启动后,点击该按钮,会出现一个主机在浮层中,移动设备通过Inspect移动端添加相应主机后,当前设计中的页面便会出现在移动设备的屏幕上,当布局修改后,点击浮层右下角的刷新按钮,可以远程控制刷新移动端的页面,以查看最新的显示效果,非常方便。还可以点击右下角的全屏按钮,改变移动端的显示效果。

一个案例教会你响应式网页设计

第一步,打开Adobe Edge Reflow CC,新建一个名为 responsive 的项目。使用 Add a Box 工具,在画布上绘制四个盒子,然后使用 Selection Tool 分别选中每个盒子,在 styling 面板中添加不同的背景色来便于区分,然后分别为每个盒子添加文字标注。点击画布右上角的加号按钮,添加几个常用临界值(如:240,320,480,640等),当然,你也可以先定临界值,然后添加盒子。最终效果大致如图:

由图可知,当前布局是针对屏幕分辨率宽为480的设备设计的,下面我们分别调整其他几个尺寸的布局,先看分辨率宽为240的:

接下来是分辨率宽为320的:

再看针对iPhone 4s等具有高清retina屏幕的分辨率宽为640的:

到目前为止,实际上已经可以测试看效果了,但是为了兼容PC浏览器,我们再添加一个大分辨率的布局效果:

好了,现在我们使用Chrome看看在各种分辨率上的显示效果,别忘了先保存,然后 F12

在Chrome中的显示效果我就不一一截图了,结果应该和上面的布局效果一致的,下面展示下在真机上的显示情况,设备有限,仅提供HTC EVO 3D(分辨率540x960)和iPad mini(分辨率760x1024)的效果。首先,启动Adobe Edge Inspect CC,然后点击Reflow右上角的 Edge Inspect CC 按钮打开主机列表,然后打开移动设备端的Inspect CC软件,HTC端如图:

点击右上角的“+”按钮,添加与Inspect CC中对应的主机IP:

输入主机地址后,点击加入将得到 passcode ,接下来如下操作:

在Reflow中的Inspect中输入passcode后点击对应设备右侧的“勾”按钮,就可以在移动设备上看到显示效果了:

以上是针对HTC的操作,针对iPad的操作大同小异,在此不再重复,下面看下iPad上的显示效果:

好了,到此我们基于Adobe Edge Reflow CC的响应式案例制作就告一段落。

PC端多浏览器兼容性问题

我们知道,在PC上有多种浏览器产商,而他们各自对标准的支持都各有特色,并不统一。对于以上案例,只能保证在对标准支持良好的浏览器中(比如Chrome、Firefox、IE8+等)才能很好的响应,而在IE8及以下浏览器中并不能得到完美的响应,只能已固定布局进行百分比缩放,这样就会出现以下尴尬的情况:

那怎么办呢?放弃低版本IE?嗯~~不太现实。不过我们的前端开发工程师是潜能无限的,所谓兵来将挡水来土掩,山人自有妙计。具体如何处理,本文不做讲解,详情请参看《media query ie8- 兼容实现总结》,此文中作者对IE8及其以下版本浏览器的响应式实现做了详细的阐释。

补充说明

Adobe Edge Reflow CC使用非常方便,开发非常迅速。但是真正用于项目开发的时候还需要有一些细节的注意。项目编译后会生成一个目录结构如图:

  • *.rflw 是一个json格式的文本文件,存放的是项目相关数据,包括画布中盒子结构,类型,位置等等一系列信息。
  • assets 文件夹中存放的是生成的静态文件css,html,images等。
  • boilerplate.css 是一个响应式模版样式文件,存放一些公共样式。
  • reflow.css 就是和我们自定义结构息息相关的样式信息了。
  • xxx_preview.html 这个是我们最终会使用到的预览页面,是最终生成的html结构。

这里需要特别注意,Adobe Edge Reflow CC的响应式是基于Chrome的,在html文件中我们会发现下面一段代码:

1
2
3
4
var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
if (!is_chrome) {
document.write("<p id='disclaimerTag'>Preview HTML generated by Reflow is meant to be viewed in Google Chrome and may not display correctly in other browsers.</p>");
}

这会导致在非Chrome浏览器中多出一段说明信息,在正式开发中我们在使用之前应该先将这些多余的结构清理掉。

总结

本文讲到的都是一些有关响应式网页设计的非常基础的东西,实际项目开发会难得多,与具体业务相关联,也没办法讲得很清楚,需要大家在实际操作的时候慢慢体会总结。