跳到正文

代码还原为设计

HTML to design:HTML 转设计稿,重建与代码脱节的设计文件

当上线的产品已经和设计稿对不上时,就把它导回来。HTML to Frames 能把线上 HTML 转换为带变量、样式和组件的 Figma 文件。

  • 根据网站的 CSS 自定义属性生成颜色变量
  • 重复出现的卡片和按钮自动变为组件
  • 吸附到你现有的设计系统

即将上架 Figma Community

HTML to design:HTML 转设计稿,重建与代码脱节的设计文件

HTML to design 与常规的交付流程正好相反:不是把设计稿变成代码,而是把已上线的代码还原成设计文件。当 Figma 文件已落后于线上版本、客户交来的网站没有任何源文件,或者改版必须从用户今天看到的样子出发、而不是从两年前的设计稿出发时,团队就会用到它。

大多数逆向流程的问题在于,产出的是一条死路。你得到的要么是一张页面图片,要么是一堆写死十六进制色值的散乱矩形,然后得有人花一周时间手动重建样式。HTML to Frames 的目标是生成一个真正能长期维护的文件。在 Pro 方案中,它会从至少使用两次的颜色以及网站的 CSS 自定义属性中提取颜色变量,因此 --brand-primary 会在 Colors · <domain> 集合中变为 brand/primary。同时还会创建文本样式和阴影样式,卡片、按钮、菜单项等重复结构会变为组件及其实例。

如果你的团队在 Figma 中已经有设计系统,插件不会与之冲突。数值匹配的变量和样式会被复用;开启 Snap 后,没有精确匹配的数值会吸附到你自己文件中最接近的颜色或文本样式。同一站点导入两次,也不会新建任何内容。

这样得到的设计文件从一开始就井井有条。完整流程请阅读 HTML to design 工作流指南,基础转换原理请看 HTML to Figma,各方案包含的功能可在价格页面对比。

从线上代码到可用的设计文件

  1. 01

    导入线上页面

    粘贴一个 URL 或最多 10 个链接;如果有构建产物,也可以直接拖入网站文件夹。

  2. 02

    开启 Styles & variables

    自动创建颜色变量、文本样式和阴影样式,并复用文件中已经匹配的内容。

  3. 03

    为你的设计系统开启 Snap

    不在系统内的数值会吸附到最接近的颜色或文本样式,而不是生成近似重复项。

  4. 04

    整理组件

    重复结构会以组件和实例的形式放进 Components 框架,随时可以重命名和编写说明。

  5. 05

    开始改版

    基于带自动布局(Auto Layout)的真实布局迭代,不必从零重画现有产品。

输出的是设计系统,而不只是图层

颜色变量

从重复颜色和 CSS 自定义属性中生成最多 96 个颜色变量,每个域名归入一个集合。

文本和阴影样式

最多 48 个文本样式,外加 sm、md、lg、xl 四档阴影样式。

吸附到你的样式

颜色采用感知 OKLab 距离匹配;文本匹配相同字体族、字重,且字号相差在 10% 以内。

自动生成组件

重复出现的卡片、按钮和菜单项会变为组件和实例,并保留文本和图片覆盖。

悬停变体

带有悬停样式的元素会变为组件集,包含 Default 和 Hover 变体以及悬停交互。

Light 和 Dark 模式

把两种配色方案捕获到同一个变量集合中,包含 Light 和 Dark 模式,并为每个屏幕生成一份深色副本。

为什么手动逆向还原设计很慢

凭肉眼在 Figma 中重建线上页面,意味着要测量间距、吸取颜色、猜字号、重画图标。一个营销页面就可能花上一天。一个有几十个界面的产品要花好几周,而且结果仍然会与真实数值有偏差。

HTML to Frames 直接从浏览器读取数值,所以间距、颜色和字号都是精确的,而不是近似值。SVG 图标会变为可编辑矢量。布局会被转换为自动布局并在 2 px 以内校验,只有在自动布局会导致元素移位的地方才保留绝对定位。

这改变了改版第一天的样子。团队不必把时间花在重建上,而是从一份准确的现有产品副本出发,把时间用在决策上:

  • 实际在用的颜色有哪些?哪些只是无意间产生的近似重复色?
  • 哪些组件在重复出现?线上实际存在多少种变体?
  • 上线的布局在哪些地方偏离了预期的设计系统?

网站转 Figma 改版指南介绍了设计公司如何借此准备提案。

由于每个框架都保存了来源 URL,你可以在下一次发布后重新导入页面,与改版方案进行对比。设计文件始终与线上版本保持关联,而不是变成又一个逐渐过时的快照。

变量和样式是如何提取的

提取的目标是生成一套精简、好用的集合,而不是每个元素一个样式。

颜色

一种颜色被使用至少两次,或被网站定义为 CSS 自定义属性时,就会成为变量。自定义属性的名称会保留为层级结构:--brand-primary 变为 brand/primary。最多 96 个颜色变量会放入 Colors · <domain> 集合。

文本和阴影

根据页面上实际渲染的文字,最多创建 48 个文本样式。阴影被归为 sm、md、lg 和 xl 四种样式。

先复用,再创建

如果你的文件中已有数值相同的变量或样式,就会直接复用。同一站点导入两次也不会新建任何内容,长期维护的文件因此保持整洁。

Light + Dark

选择 Light + Dark 配色方案时,页面会在两种 prefers-color-scheme 设置下分别捕获,同一个集合获得两种模式。Figma Free 文件每个集合只允许一种模式,因此这种情况下会跳过深色模式并附上说明。

以上一切都是可选的。关闭 Styles & variables,你得到的就是带原始数值的普通图层,有时快速参考或一次性拆解正需要这样。

Snap:让导入内容留在你的设计系统内

线上代码很少能与设计系统完全一致。某个按钮可能用的是 #2161E9,而令牌是 #2160E8;某个标题可能是 31 px 而不是 32 px。如果原样导入这些数值,你的文件就会被近似重复的样式淹没。

Snap to my file's styles(吸附到我文件的样式)正是为此而设。在没有精确匹配时,插件会用感知 OKLab 距离在你的文件中寻找最接近的颜色,并寻找字体族和字重相同、字号相差在 10% 以内的最接近文本样式。导入的图层随后会绑定到你的样式,而不是新建样式。

它在三种场景下特别有用:

  1. 审查:希望看到产品用官方设计系统表达出来的样子。
  2. 改版:希望从第一个框架起就遵循设计系统。
  3. 竞品拆解:用你自己的令牌重新设计别人的布局。

Snap、Styles & variables 以及 Components & hover states 都是 Pro 功能。插件绝不会读取超出所需的文件内容;它只写入图层,并且只读取自己创建的框架的元数据,详见安全页面。

当你的文件中已有已发布的颜色和文本样式时,Snap 效果最好。先从一个小而干净的样式库开始,导入一个有代表性的页面,检查哪些数值成功吸附,再对网站其余页面进行更大规模的 Multiple 导入。

常见问题

联系支持

指的是把线上代码或已发布的网站还原为可编辑的设计文件。不是先设计后编码,而是把已经做好的东西导入,让设计文件重新与线上版本一致,适用于改版、审查以及交付时没有源文件的网站。

Pro 方案会。至少使用两次的颜色和被定义为 CSS 自定义属性的颜色都会成为变量。像 --brand-primary 这样的属性会在以域名命名的 Colors 集合中变为 brand/primary。每次导入最多创建 96 个颜色变量。

不会。文件中已有的变量和样式在数值匹配时会被复用,同一站点导入两次也不会新建任何内容。开启 Snap 后,没有精确匹配的数值会绑定到你现有最接近的颜色或文本样式,而不是新建样式。

卡片、按钮和菜单项等重复结构会被识别出来并转为组件和实例,同时保留文本和图片覆盖。带有明显悬停样式的元素会变为包含 Default 和 Hover 变体的组件集。主组件会放在单独的 Components 框架中。

可以,Pro 方案支持。将配色方案选为 Light + Dark,页面会在两种设置下分别捕获。你会得到一个包含 Light 和 Dark 模式的变量集合,以及每个屏幕的深色副本。Figma Free 文件每个集合只允许一种模式,因此会跳过深色模式。

不需要。对大多数网站来说,一个公开 URL 就够了。如果你有构建产物,可以拖入网站文件夹或 .zip;对于需要登录的页面,免费的 Chrome 扩展可以捕获浏览器显示的内容。所有途径都会得到同样可编辑的结果。

别再手动重画网页了。

粘贴一个链接,几秒钟就能得到真实、可编辑、响应式的 Figma 图层。免费起步——每月 10 次导入。

无需信用卡。Pro 直接在 Figma 内购买。

即将上架 Figma Community