跳到正文

像素 vs. 图层

HTML to canvas:HTML 转画布,在 Figma 画布上得到可编辑图层

位图截图库给你的只是像素。HTML to Frames 会把页面以矢量、文本和框架的形式放到你的 Figma 画布上,随时可以修改。

  • 可编辑文本和 SVG 矢量,而非栅格图片
  • 真正的 canvas 和 WebGL 区域以该区域图片的形式保留
  • 冻结动画,得到干净、一致的画面

即将上架 Figma Community

HTML to canvas:HTML 转画布,在 Figma 画布上得到可编辑图层

“HTML to canvas”有两种不同的含义,选择工具之前最好先分清楚。开发者通常指的是 html2canvas——一个遍历 DOM、把页面近似绘制到 <canvas> 元素中的 JavaScript 库,或是捕获可见像素的浏览器截图。设计师通常指的是另一回事:把网页放到 Figma 画布上,以便在上面工作。

两者产出的东西看起来都像那个页面,但只有一种能让你真正用来工作。位图再清晰,也只是由彩色像素组成的网格。你无法修正错别字、修改字号、给按钮换色,或把一张卡片拖进新的布局。你只能裁剪、缩放和在上面涂抹。

EUREKA! 出品的 Figma 插件 HTML to Frames 采用的正是第二种含义。它在真实浏览器中渲染页面,读取每个元素计算后的几何信息和样式,然后在你的 Figma 画布上用原生图层重建页面:映射页面结构的框架、保留原有样式的可编辑文本、由 SVG 转换的矢量,以及保持原有填充方式的图片。布局在可以校验通过的地方会转换为自动布局(Auto Layout),因此调整尺寸时结果也会随之响应。

只有一种情况下像素才是正确答案,而插件对此有专门处理。真正的 <canvas> 元素或 WebGL 场景内部没有可供重建的 DOM,所以该区域会以截图图片的形式导入,页面其余部分仍保持可编辑。

想看这一对比的详细版本,请阅读 HTML to canvas 与可编辑图层对比。想了解核心转换,请从 HTML to Figma 开始,或在功能页面浏览可转换的内容。

把页面放到你的 Figma 画布上

  1. 01

    选择页面来源

    URL、本地文件或文件夹、粘贴的 HTML 和 CSS、Chrome 标签页,或通过 MCP 连接的 AI 工具。

  2. 02

    交给浏览器渲染

    页面在隔离的浏览器中加载,动画会被冻结,WebGL 在渲染几帧后冻结。

  3. 03

    在画布上获得图层

    框架、文本、矢量和图片被放置到当前 Figma 页面上,可直接编辑。

为什么在画布上图层胜过位图

文本依然是文本

标题和正文以可编辑文本导入,字间距、行高和混合样式完整保留。

SVG 变为矢量

图标和 Logo 被转换为可编辑的矢量图层,换色、缩放都不会模糊。

可选中的结构

嵌套框架遵循页面结构,你可以直接选中单张卡片,而不必裁剪图片。

只在必要处使用像素

iframe、没有封面图的视频以及 WebGL 或 3D canvas 区域会以该区域截图图片的形式导入。

冻结后的干净捕获

动画会被暂停以获得一致的画面,不会出现半透明淡入中的元素。

参考图层

在 Pro 方案中,一个隐藏、锁定的截图图层可让你将重建结果与原始像素进行对比。

html2canvas 和截图 vs. 可编辑图层

截图方案和 HTML to Frames 都从同一个渲染后的页面出发,但最终结果截然不同。

html2canvas / 浏览器截图Figma 画布上的 HTML to Frames
输出一张栅格图片框架、文本、矢量和图片
编辑文本无法编辑直接原地编辑
缩放超过 1x 就模糊矢量始终清晰
布局固定像素校验通过处为自动布局,其余处为约束
选中单个元素手动裁剪点击框架即可
典型用途缺陷报告、缩略图、预览改版、审查、交付、设计系统

html2canvas 还用 JavaScript 重新实现了 CSS 渲染,因此可能遗漏浏览器支持的特性。HTML to Frames 在真实的 Chromium 内核浏览器完成渲染后读取数值,再映射到 Figma 属性:包括锥形和重复渐变在内的各种渐变、阴影、混合模式、模糊和背景模糊、clip-path、mask-image 等。

截图依然有其用武之地。如果你只需要一份快速的视觉记录,位图就够了。但只要你打算修改任何东西,图层就能让你免于重画页面。

一个实用的经验法则:如果下一步是写评论或提工单,截图就够了。如果下一步是打开 Figma 修改内容,那就导入图层。

真正的 <canvas> 或 WebGL 元素会怎样处理

页面上有些内容本身就是像素。<canvas> 元素通过 JavaScript 绘制,WebGL 场景则在 GPU 上渲染 3D 图形。这些区域内部没有可读取的 DOM,因此任何工具都无法把它们变成有意义的矢量图层。

HTML to Frames 会明确处理这些内容,而不是悄无声息地失败:

  • 该区域会在精确的位置和尺寸上被捕获为一张截图图片。
  • WebGL 场景会在渲染几帧后冻结,因此你得到的是稳定的图像,而不是空白或过渡中的画面。
  • 区域周围的一切,例如叠加在上面的标题、按钮和浮层,都保持为可编辑图层。

同样的规则也适用于其他无法成为图层的嵌入内容:地图等 iframe、没有封面图的视频,以及 object 或 embed 元素。每一项都会变成其所在区域的图片,结果界面会列出所有警告。

实际上,这意味着一个带有 3D 首屏的落地页仍能转换为可用的设计稿。你可以把首屏图片换成新的视觉、改写上方文案、调整间距,而页面其余部分依然保持自动布局。想了解布局是如何推断的,请看自动布局详解。

从动态页面中获得干净的画面

现代页面是动态的:轮播图在切换,元素随滚动淡入,Cookie 横幅向上滑出,首屏在加载时播放动画。简单粗暴的捕获只会定格那一毫秒正在发生的状态。

HTML to Frames 会按普通访客看到的样子捕获页面,并提供几项控制让结果可预期:

冻结动画

动画会被冻结,捕获结果中每个元素都处于稳定状态,而不是停在过渡的一半。

开启此选项后,同意横幅和弹窗会在捕获前被隐藏,不会遮挡你画布上的页面。

Extra wait

对于内容加载较晚的慢速页面,可以在捕获前多等一会儿。Extra wait(额外等待)是 Pro 选项。

Full page

根据需要,捕获整个滚动页面或仅首屏。

无论页面来自 URL、本地文件还是 Chrome 扩展,这些选项都适用。当你需要某个特定状态(例如展开的菜单)而非默认视图时,扩展就是合适的选择。

如果仍有内容在动画中途被捕获或缺失,结果界面会列出警告,换个选项一键重新导入通常是最快的解决办法。

常见问题

联系支持

不是。html2canvas 是一个把 DOM 近似绘制成位图的 JavaScript 库。HTML to Frames 是一个 Figma 插件,会在 Figma 画布上把页面重建为可编辑图层:框架、文本、矢量和图片,并在可校验通过的地方使用自动布局(Auto Layout)。

可以。文本会以原生 Figma 文本图层导入,包括同一段落内的混合样式、链接、字间距、行高和 text-transform。如果某个字体不可用,Missing fonts(缺失字体)界面会让你在构建页面前选择替代字体,并记住你的选择。

它们内部没有可供重建的 DOM,因此每个这样的区域都会以截图图片的形式,按精确的位置和尺寸导入。WebGL 会在渲染几帧后冻结,以获得稳定的图像。区域周围的一切都保持为可编辑图层。

可以,Pro 方案支持。Reference screenshot(参考截图)选项会在导入内容下方添加一个隐藏、锁定的图片图层。需要将重建图层与原始渲染对比时就把它打开,其余时间保持隐藏,不会碍事。

动画会被冻结,并且如果你选择了相应选项,Cookie 横幅和弹窗会被隐藏,因此捕获结果显示的是稳定后的页面。截图则会拍下那一刻屏幕上的任何内容。如果你需要特定状态,例如展开的菜单,请使用 Chrome 扩展。

线性、径向和锥形渐变,内外阴影,text-shadow,不透明度,混合模式,模糊和背景模糊,clip-path,mask-image,旋转和缩放。暂不支持斜切和 3D 变换、path() clip-path、多层蒙版以及 Display-P3 颜色。完整列表见功能页面。

别再手动重画网页了。

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

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

即将上架 Figma Community