整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

Sketch 和 PS中的设计图如何实现“自动切图”?

图是很多UI设计师的一项日常工作。平时做完设计图,要将设计稿切成便于制作成页面的图片,并标注好尺寸和间距,交付给前端来完成html+css布局的静态页面,有利于交互,形成良好的视觉感。

但有的认为前端自己会切图是最好,不建议把切图的事情丢给设计师做。这样中途会损耗结构讲解的开销(比如网页层级,细节重构方案等),毕竟最后css是前端去码,怎么切最合适要自己把捏的,否则又要引出一个新问题(设计师有必要掌握考虑重构实现的切图吗?)。

总之,切图对于设计师设计创作、程序员写代码来说,其实不是件难事,但是似乎成为了件苦差事?

UI设计师:“因为不愿切图,被人事劝退。”



程序员:“被人蔑称切图仔该怎么怼回去……”



看到这里,小编只想替各位UI设计师和程序员说:“你才是切图仔,你全家都是切图仔!”



到底手动切图是有多恼火?小编上网搜索了一下,发现传统的切图方法如下:

1.打开下载的psd文件

打开后,因为文件比较长所以看不清细节,所以要放大图片到合适的大小。

2.修改参考线

图片中很多条蓝色的参考线都是是设计人员用来设计用的,很多我们都不需要,所以先把这些参考线都清除掉。

3.选择要切的图标

①选择工具栏第一个“移动工具”

②然后查看上面选项栏“自动选择”有没有被选中……

……此处省略300字……

4.切片需要的图标

现在,我们已经用参考线把我们的图标给包裹出来了,下面,我们要用切片工具来切出我们的图标

①选择切片工具,左边工具栏从上往下数第五个,然后右键就可以找到,然后选中 ……

……此处省略300字……

5.将切片存储为图片

①选择 “文件”=》“存储为Web所用格式”

②调整缩放比例,让图片能完整的在窗口显示 ……

……此处省略300字……

need-to-insert-img



小编十分纳闷,有自动切图工具大家为什么不用?

摹客iDoc,一键切图,可对接PS和Sketch等。从此切图只需两步!

第一步,安装并打开Sketch插件。

去摹客官网(https://idoc.mockplus.cn/download)下载摹客iDoc Sketch插件安装文件并点击进行安装。插件安装好后打开Sketch,在「Plugins(插件)」中找到摹客 iDoc 插件,选择并打开。使用摹客平台账号即可登录。



第二步,上传切图。

选中需要切图的图层或编组,点击Sketch 右下角的Make Exportable右侧的加号便可完成切图标记,无需再设置多种切图倍率,iDoc将自动生成不同倍率的切图。



点击下拉框选择设计稿所属的项目。



点击上传所选或全部上传便会将设计稿资源一键上传至iDoc,设计师和开发可登录摹客iDoc查看标注与下载切图等等。



当然,市面上还有别的切图工具,但是小编向你保证,摹客iDoc虽然不是你的唯一选择,但却是你的最佳选择!

原因很简单。摹客iDoc是一个多功能的产品协作平台,集自动标注、一键切图、多样批注、快速交互、全貌画板和团队管理为一体,从设计到产品再到开发只需一个文档,大大优化工作流程,是简单的只能切图的插件不能比的;其次,对比其他多功能平台,摹客iDoc有相当多的亮点:

使用的photoshop版本为PS6。

一 心得体会

今天的任务是按照设计师提供的设计稿,实现HTML页面。一般来讲,设计稿里面会出现很多图标和图像,这个在利用HTML和CSS是绘制不出来或者很难绘制出来的,开发效率会很低,因此我们会选择切图然后贴图的方式完成我们的工作。

之前工作的时候也用过切图,但是很少使用参考线,重新学习发现参考线的作用真的很大,它可以提前确定切图的区域,方便我们判断切图分区的合理性;其次切图时自动吸附到参考线的操作减少了我们切图时的误差。

二 相关知识点

切图应该按照如下步骤:

  1. 观察设计图选取一个最优切图方案;
  2. 将影响切图的图层隐藏起来;
  3. 使用参考线将需要切的图标和图像包裹起来;
  4. 选择切片工具将图标和图像切割;
  5. 将切好的图标和图像存储为web所用格式。

以百度前端技术学院给我们的设计图(下图)为例

1 观察设计图选取一个最优切图方案

该设计图比较常规,我们需要的切图分为四种:背景图,图标,异形字标题,图片。根据这个需求我们来切割设计图。

2 将影响切图的图层隐藏起来

在上述案例中,切割背景图时我们需要将背景图上面的图层全部隐藏,这样才能得到一个干净的背景图。

利用上图的操作(将图层前面的眼睛点掉)我们将需要隐藏的图层隐藏器来,得到下面这些干净的背景图


注意:第三章人像背景图去掉遮盖在上面的图层后与其他人像背景图颜色不一样时因为原设计图人像背景颜色本来就不一样,这里时设计时素材选择出现的问题,正常应该是人像背景图颜色一致,这样才能统一美观。

3 使用参考线将需要切的图标和图像包裹起来

设计时一般都会用到参考线,我们拿到设计图时没有看到参考线可能是被隐藏了,使用快捷键“ctrl”+“;”可以显示(隐藏)参考线。

如下图所示,点击红框标尺部分不放然后拖动到设计图区域即可创建一条横向/竖向参考线,将参考线拖动到标尺部分即可删除该条参考线;当当前工具为移动工具时,按住“alt”键然后点击参考线会将竖向参考线变成横向参考线(横向参考线变成竖向参考线)。

以下图建好的参考线为例,红色箭头指向的参考线将图标包裹起来,绿色箭头指向的参考线表明图标与右侧文字的间距,方便同类型图标大小和间距的选择。

4 选择切片工具将图标和图像切割

如下图所示,将鼠标停在从上到下数第五个工具处,点击鼠标右键,选取切片工具,找到需要切的图标或图形,从左上角拖拉到右下角。因为右参考线的辅助,选取的时候会自动吸附到参考线上,这样避免了切图时的误差。

注意:选取的时候尽量靠近参考线,这样更好帮助软件工作。

将所有图标或图像切好后呈现下图的样子,每个切片的左上角都有一个角标显示自己是哪一个切片。

5 将切好的图标和图像存储为web所用格式

点击“文件”-“存储到web所用格式”。

选择下图箭头所示存储格式。

点击存储,然后跳出下图所示弹窗,根据自己的需求设置格式,设置和切片(下图中的所有设置为常规设置),然后选择保存路径,最后点击保存。

保存成功后我们会在保存路径里面找到一个“image”文件夹,所有的切片都在文件夹里面,如下图所示。

最后选取出我们需要的切片,大功告成。

三 需要注意的细节

  1. 使用参考线包裹图标时需要注意相同类型的图标大小要一致,与旁边文字的间距一致。这样可以减少相关内容的代码量。
  2. 用参考线包裹图标时,图标不一定需要在区域中心位置,这个需要根据设计图来选择。

款神器就是「CodeFun」,它号称“UI 设计稿智能生成源代码,10 分钟完成 8 小时工作量”,让我们做前端,不搬砖

体验一把一键生成代码

说干就干,我按照官网介绍的三个步骤,顺利将 UI 稿件,并转换为 Vue.js 代码了,看下最终效果:

从导入文件到导出代码,前后只花了三分钟,简直不要太爽了

说说使用方法吧~

「CodeFun」官网上介绍的快速上手流程,只需 3 个步骤即可从 UI 稿到生成项目代码。(该不会吹牛吧)

依葫芦画瓢,首先我按照官网说明,安装好「CodeFun」插件,然后准备好 sketch 素材(也支持 PS 素材):

然后开始三个步骤(省略安装插件过程):

直接打开 sketch 文件后,在顶部「插件」菜单,选择「CodeFun」的「上传设计稿」菜单:

然后在弹框中登录账号,并选择创建的「项目」和「画板」:

然后点击「上传」,等待上传完成后,后台便马上能看到我们导入的项目,并且每个页面整齐摆放,我们随便打开一个页面看看:

熟悉的代码,熟悉的 HTML/CSS/JavaScript 映入眼帘。

然后试试导出项目代码,可以自行选择导出「微信小程序」或者「Vue.js」项目,还有选择导出的是 rpx 单位还是 px 单位,简直太贴心了!

说说简单体验后的感受

太香了,我们可以根据项目需要,选择生成 H5 或者小程序代码,还原度极高,很符合官网介绍的特点「精准还原设计稿,生成如工程师手写一般的代码」。

当然,毕竟是自动生成,可能存在部分不完美的地方(为CodeFun加),在实际项目部署前,我们花点时间做样式微调,然后加上自己的业务处理逻辑,就可以啦。

这给我省下太多切图时间了!

当然,这里只是简单介绍,大家可以体验下(官网:https://code.fun),然后结合文档,相信你会很有收获~

CodeFun 还有哪些强大功能?

在我翻阅「CodeFun」文档时,发现它竟然还有好多强大的功能。

1.强大的 List 标签组件

List 标签组件用于循环列表,它的强大之处在于,可以自动将相似的列表内容,并自动识别为 List 标签,生成 v-for 风格的代码。那么我们眼见为实,以下面页面评论列表为例,试试看:

红色框内容设置为 List 标签后,生成代码如下(需要开启“将 List 标签输出为循环列表”):

<div class="flex-col list">
  <template v-for="(item, i) in listJWuhbbAm">
    <div class="list-item flex-col" :key="'item' + i">
      <div class="top-group flex-row">
        <img class="image_15" :src="item.avatar" />
        <div class="right-group flex-col">
          <span class="text_20">{{item.name}}</span>
          <span class="text_22">{{item.date}}</span>
        </div>
      </div>
      <span class="text_24">{{item.desc}}</span>
    </div>
  </template>
</div>

其 JS 代码如下(需要开启“数据绑定输出模式”):

export default {
  data() {
    return {
      "listJWuhbbAm": [{
        "avatar": "https://codefun-proj-user-res-1256085488.cos.ap-guangzhou.myqcloud.com/60d5579cf7299c00115e83a5/60ead063fdb7540011c108e0/16260016341787250137.png",
        "name": "晓晓晓",
        "date": "2019-02-26",
        "desc": "非常的好,干净整洁,卫生做得很到位,房东人很好,离地铁站很近,五星好评,推荐哦!"
      }, {
        "avatar": "https://codefun-proj-user-res-1256085488.cos.ap-guangzhou.myqcloud.com/60d5579cf7299c00115e83a5/60ead063fdb7540011c108e0/16260016342203168767.png",
        "name": "啦啦菇凉",
        "date": "2019-02-16",
        "desc": "非常的好,干净整洁,卫生做得很到位,房东人很好,很负责任,离地铁站很近,生活方便,附近很多美食街,大型购物广场,五星好评,推荐推荐哦,来了你就不想走的地方…"
      }, {
        "avatar": "https://codefun-proj-user-res-1256085488.cos.ap-guangzhou.myqcloud.com/60d5579cf7299c00115e83a5/60ead063fdb7540011c108e0/16260016343523144906.png",
        "name": "不告诉你",
        "date": "2019-02-16",
        "desc": "西天的晚霞挥动着绚丽的纱巾,晚风吹起来,一支支狗尾草摇响一渠黄昏的抒情曲。一排排白色的小木屋出现了,像童话一般精致,又像梦一样美丽。"
      }]
    };
  },

};

和我们实际业务开发一样,这里的 List 列表也是共用 CSS 样式代码的:

.list-item {
  padding: 27rpx 28rpx 28rpx;
  border-bottom: solid 2rpx rgb(245, 245, 245);
}

.list {
  margin-top: 15px;
}

是不是很香,用着还很方便~

2.优秀的 Grid 布局

在业务开发中,经常会遇到如「多列操作按钮」这种网格类的布局需求,如下图红色框内容:

考虑到不同尺寸屏幕的适配问题,经常需要对布局进行特殊设置,常用就有 Grid 布局,在「CodeFun」中,就支持自动将设计稿中这类 UI 生成为 Grid 布局代码,简单操作后,上图转化为下面代码:

<div class="grid">
  <div class="grid-item flex-col items-center">
    <img src="https://project-user-resource-1256085488.cos.ap-guangzhou.myqcloud.com/60d5579cf7299c00115e83a5/60ead063fdb7540011c108e0/16260016485084464827.png" class="image_7" />
    <span class="text_9">附近</span>
  </div>
  <div class="grid-item flex-col items-center">
    <img src="https://project-user-resource-1256085488.cos.ap-guangzhou.myqcloud.com/60d5579cf7299c00115e83a5/60ead063fdb7540011c108e0/16260016485093876260.png" class="image_7" />
    <span class="text_9">市区</span>
  </div>
  <div class="grid-item flex-col items-center">
    <img src="https://project-user-resource-1256085488.cos.ap-guangzhou.myqcloud.com/60d5579cf7299c00115e83a5/60ead063fdb7540011c108e0/16260016485107042498.png" class="image_7" />
    <span class="text_9">写字楼</span>
  </div>
  <div class="grid-item flex-col items-center">
    <img src="https://project-user-resource-1256085488.cos.ap-guangzhou.myqcloud.com/60d5579cf7299c00115e83a5/60ead063fdb7540011c108e0/16260016485084464827.png" class="image_7" />
    <span class="text_9">郊区</span>
  </div>
  <div class="grid-item flex-col items-center">
    <img src="https://project-user-resource-1256085488.cos.ap-guangzhou.myqcloud.com/60d5579cf7299c00115e83a5/60ead063fdb7540011c108e0/16260016485093876260.png" class="image_7" />
    <span class="text_9">公寓</span>
  </div>
  <div class="grid-item flex-col items-center">
    <img src="https://project-user-resource-1256085488.cos.ap-guangzhou.myqcloud.com/60d5579cf7299c00115e83a5/60ead063fdb7540011c108e0/16260016485107042498.png" class="image_7" />
    <span class="text_9">城中村</span>
  </div>
</div>

样式代码如下:

.grid-item {
  padding: 9px 0;
}

.grid {
  margin: 9px 12px 0 11px;
  color: rgb(51, 51, 51);
  font-size: 12px;
  font-weight: 500;
  line-height: 17px;
  white-space: nowrap;
  height: 162px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
}

这就很赞了。

3.灵活的组件类型

当我们需要设置顶部 header 或者底部固定 footer 时,只需将组件类型设置成 Header 或者 Footer 标签即可:

4.方便的路由跳转设置

对于前端应用,经常需要在不同页面进行跳转,「CodeFun」也支持设置页面路由跳转:

生成了下面的 JS 代码:

export default {
  data() {
    return {};
  },
  methods: {
    view_21OnClick() {
      this.$router.push({
        name: 'index'
      });
    }
  }
};

在「CodeFun」使用过程中,加上这几个功能,已经能满足我们大部分的切图场景了,节省下来的切图时间,可以让我们有更多时间用来处理业务逻辑。cool

对 CodeFun 的思考

当我们在项目中开始使用 「CodeFun」,会发现我们业务研发流程悄悄发生了变化,下图对比了两种业务研发流程:

显然,新的研发流程搭配「CodeFun」,会更加灵活且高效~

体验总结

体验了几天「CodeFun」后,说说我的一些建议:

  1. 可以增加对 React/Angular 等前端框架的支持;(为了能照顾到更多用户哈)
  2. 「数据绑定」模块的交互不够直观,对新手可能很难理解如何去进行配置。(可以做得更直观一点)

我认为「CodeFun」重要的价值在于:利用高效的识别特点,大幅度帮助前端工程师从繁琐的页面切图中解放出来。通过较低的学习成本,让使用者能更加简单且高效的完成需求。

目前「CodeFun」产品还在快速迭代,建议大家在使用过程中,尽量避免使用太过复杂的 UI 稿,可能会存在生成效果的偏差(相信「CodeFun」工程师们已经在努力减小这些偏差),但其实也还好,我们可以在生成的代码中,适当做一些调整即可。