关于“提升Web设计转码效率”问题的思考
关于设计转码,有一个更新被大家所认可的名称,叫作“切图”,在本文中我没有使用“切图”二字的原因在于,在我所理解的设计转码工作中,并不只是切图这么简单。
长久以来我们怎么做?
自从出现Web这个事物开始,每一个Web页面就会经历从产品需求到设计到出图到转码的这么一个过程,虽然技术变革给我们带来了很多炫酷的工具以帮助我们更加快速、方便的进行这样的工作,但是最终工具终归是工具,人,这一动作的主体永远都无法去掉:
- 产品提出需求,制作产品交互原型;
- 设计师根据产品的交互原型制作精美的设计图;
- 切图工作者将设计图转换成HTML静态页面。
上面是我们最常见的工作流程,而用到的工具最多的还是 Photoshop,对于切图工作者,用到得最多的又是 Photoshop 里面的 切片工具,它能快速的将一整张PSD图切割为很小的块,然后导出,再从导出的图片里面选取我们需要的使用即可(而在以前,很多人更是直接使用了 Photoshop 导出的HTML进行修改即直接应用到最终的产品代码中去)。
长久以来我们又有什么样的问题?
按上面这种工作流程,看似很平常不过了,也特别符合我们心理预期的工作流程,但是,却有很多问题:
- 交互原型在很大程度上已经给设计定型了,比如交互原型里面会指出哪里有按钮,哪里是一个列表,哪里有一个表格,哪里放一个Banner等;
- 设计师很多时候仅仅只是美化交互原型,比如将按钮改个配色,调整一下元素的尺寸,画一个漂亮的Banner,精细的设计师会让自己的设计图精确到一个像素,这就是我们常说的像素级精确的设计;
- 而切图工作者在将设计转码的过程中,为了保证还原度,很多时候也很无奈的只能使用切图工具将设计图导出为一些图片切片,然后再用代码拼接到整个页面中,硬性的将Photoshop里面的图层对应到CSS里面的Layers中,然后定位也像设计图版的像素级的去调整。
这种方式所带来的最大的问题,并不是最终成品的效果不好,而是,整个工期太长,尤其是在响应式布局以及移动设备流行之后,更是在绝大多数情况下,压根就无法满足生产的需要了。
后来大家都又想过什么样的解决办法?
说起前面这些问题的解决办法,我想最多的,还是都没有解决最终问题,因为工作流程都没有想过要去改变,还是产品-设计-转码这样的流程,那这样的流程就决定了永远都存在切图这一个工种,而解决的办法就是提升这个流程中每一个环节的工作效率,比如各种各样的在线或者线下的工具,用于将导入的PSD自动按图层、分组等导出;或者制定PSD文件的制作标准(比如图层如何分组、名称应该如何定等),但是问题依旧存在。
对于新手,可能还是先使用Photoshop切出图片,然后再一边写着HTML一边写着CSS,最后缓慢的完成一个产品,而我自己也总结了一套自己的切图方式,还算比较快速:
- 先浏览所有设计图,找出设计图中通用的布局与元素样式,先将这些基础的元素转为代码(此时基本上不需要切图,因为绝大多数情况下都能直接使用CSS样式化出来同样或者特别接近的效果);
- 使用上一步完成的基础的样式库一般都完成所有页面的布局与样式工作;
- 再对每一页的特殊元素进行特殊处理。
这个方式在技术上一般是下面这样的书写步骤:
- 先看图直接完成所有元素与布局的HTML结构;
- 完成HTML结构之后,再完成CSS样式;
- HTML中,基础元素全部使用
class而不是ID - ID 直接应用到整个Page。
关于上面所用方式的一段代码示例
<body id="page-name-id">
<header>
<h1>网页名称</h1>
<nav>
<a href="index.html" title="网站名称">首页</a>
<a href="about.html" title="关于我们">关于</a>
</nav>
</header>
<div class="columns">
<article class="news-item">
<h2>文章标题</h2>
<p>内容</p>
</article>
<aside>
...
</aside>
</div>
</body>而后,CSS中有可能有两份
body {...}
header {...}
article {...}
h2 { ... }
article h2 { ... }
...然后对于某个单独的页面
#page-name-id article {...}这上面这些工作都完成之后,就到了切图的工作了,但是与以前的切图工作不再一样的是,不再是使用切片工具将整个图都切出来,而是按需要将元素取出来,在很多,一张设计图只需要取出图标、背景、Banner等元素即可。
解决问题的一种方法
我一直都是属于那种比较偷懒的人,如果想要解决切图的问题,那最好就是压根就不存在这个问题,但是如何可以让我们的工作流程中规避掉?
某一种方法
改变现有工作的工具以及工作方式个人感觉应该是最好不过的方式了,大概的思路是:
技术结构
- 版本管理: Git/Gitlab
- 文档编写: Markdown / Office Word
- 交互原型与设计: Sketch / Photoshop
基本工作流程
- 产品人员出产品需求文档,详细描述产品功能细节;
- 交互设计使用Sketch制作交互原型;
- 设计师使用直接美化Sketch交互原型,若有需要细化设计的图片,使用Photoshop单独制作并导入Sketch文档;
- 前端开发人员直接按照Sketch进行开发,不需要切图流程,直接使用Sketch导出所有资源文档,设计中关于颜色、尺寸的测量等直接以Sketch中的样式标注为准即可。











