若是要用一句最简单的话来解释 Figma 是啥,它是一个能够同时在浏览器和本地客户端使用的 Sketch(设计工具)。css
对于前端的我来讲,它最吸引人的点就在于能够在浏览器端运行。由于以前也开发过两个 Sketch 插件:html
可是介于以前 Sketch 插件是相似开发客户端的感受,文档也很凌乱,而且处于新旧 API 共存的状况,整个开发体验是很是糟糕的(不知道如今状况有没有改善)。前端
而对于能够在浏览器端运行的 Figma 插件,它的开发就是 HTML+CSS+JS。因此对于前端来讲开发体验会相对来讲好不少,几乎没有上手成本。官方文档也是很详细,基本按照如下 4 个步骤,要不了 10 分钟你就能跑起来一个官方 Demo。node
npm install -g typescript
「若是有忽略」;若是只是想跑一个DEMO 到这里基本就已经结束了。本文的重点仍是会想要从一个小白的角度,帮你们减轻一些上手成本和一些官方没有提到的坑。webpack
在具体讲内容以前,可能会先要尝试解答一下这个问题。我本身主要有如下几个缘由:git
margin
的概念? 在个人另外一个文章里有尝试解答 CSS 布局与“仓库管理”的关系。在你写 Figma 插件的时候,你会关注到这些以前其实能够不用考虑的问题;Figma 插件的 UI 界面是相似一个浮窗。这个 UI 界面红框的部分,实际上是一个 web 的 iframe 页面。因此理论上,在 figma UI 界面里面可使用浏览器的全部 API。github
此外 Figma 还提供了不须要 UI 界面的插件。好比用户选择某个元素,而后调用插件将元素旋转 180 度之类不须要用户输入内容的一次性操做。web
code.js 这个文件能够调用 figma 自己提供的 API,好比对于多余元素的获取建立修改均可以作到。固然这个 API 也是有限制的,这个具体要看官方的文档。或者是查看 figma.d.ts 这个文件,这个文件其实只是一个 figma API 的接口文件,帮助你在本地开发的时候会有代码提示。typescript
ui.html 文件就是会被 figma 插件 iframe 显示的web 页面。因此理论上是支持浏览器的全部API。可是这里有一个限制是,全部的 CSS 和 js 文件都只能内联使用。因此通常会借助打包工具,把 CSS 或者 script 打包进去。使用 gulp 的同窗能够考虑使用 gulp-usemin 这个插件,webpack 的同窗能够忽略。npm
ui.html 个文件也是不能直接访问 figma 内部的 API 的,你只能经过 figma.postmessage 向 code.js 发送信息,而后经过调用 code.js 去访问 figma 自己的 API,再经过 figma.postmessage 返回结果到 ui.html。
这边再推荐两个,能够减小你们平常重复劳动的插件。
这个就是你在figma里面导图标的时候,若是设计师并无帮你叠好矩形在图标的后面,每每导出来的图片尺寸会有问题。 Icon-zone 会帮你在图标后面叠加一个 4 的倍数的矩形。并帮你呼出导出图片的面板,而后你只须要再点击一下 export 按钮便可导出。也就是说原来至少要5,6步的操做如今只须要两步。
ACSS 就是帮你自动生成选中的文本元素 CSS 和 html。若是你文本的样式是来自于设计师定制 local styles
, 你还能够为这个定制想要的CSS 选择器,而不走 ACSS
的逻辑。
由于 Figma 插件自己的逻辑设计的就比较的简单,因此能够介绍的也比较少。有几个遗留的问题是我没有找到方案的。知道的同窗也能够帮忙解答一下。
figma 自身是能够直接导出文本,和 CSS 样式到粘贴板的。可是 figma 自己却不提供,复制内容到粘贴板的功能。以致于咱们须要在 ui.html 再经过传统的方式实现一个复制到粘贴板的功能。
而且我也没有找到,能够直接获取 Figma 导出 CSS 的接口,明明 figma 都已经能够导出 CSS,可是这边仍是要本身去经过属性值去拼接出全部的样式这一点也是让人有点疑惑。
我这边也是在摸索的阶段,感兴趣的同窗欢迎一块儿研究。