360 Secure SkillHub
360 安全技能中心

Design To Code

核心功能是解析设计稿的标注、层级、状态与响应式规则,对齐项目设计token,按布局、排版、视觉、交互、响应式的优先级实现UI。典型场景:需还原设计图、实现页面/组件UI时触发。输入为Figma/Sketch链接、设计截图或标注,输出符合项目技术栈的语义化、组件化前端代码,必要时说明与设计稿的差异原因。

wangzhiming1999
wangzhiming1999
热度 96.77
最近更新 2026-05-11 17:28:31
分类:开发依赖:内部调用大模型 / 联网浏览搜索应用场景:代码生成 / UI 原型

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add design-to-code
Metadata
name
design-to-code
description
Implements UI from design mockups (Figma, Sketch, or image) with pixel-accurate layout, responsive behavior, and design tokens. Use when 还原设计图, implementing designs, 切图, 设计稿转代码, or converting mockups to frontend code.

还原设计图(Design to Code)

将设计稿(Figma/Sketch/图片)高保真还原为前端代码,保证布局、间距、字体、颜色与交互一致。

触发场景

  • 用户说「还原设计图」「按设计稿实现」「切图」「设计转代码」
  • 提供 Figma/Sketch 链接、设计图截图或标注
  • 需要实现某个页面/组件的 UI

执行流程

1. 先确认用户给了什么

用户给的 第一步
Figma 链接 问:有没有 Figma 访问权限?如果没有,让用户截图或导出标注
设计图截图 直接分析,提取尺寸/颜色/字体/间距,列出关键标注
只有描述,没有设计图 问:「有没有设计稿?如果没有,我可以按常见 UI 规范实现,但可能和你预期有出入」
有设计图 + 现有代码 先读现有代码,了解技术栈和已有组件,再还原设计

2. 分析设计稿,提取关键信息

读设计图时,按这个顺序提取(不要跳过):

布局结构

  • 整体是几列?用 Flex 还是 Grid?
  • 各区块的宽度是固定的还是弹性的?
  • 有没有响应式断点?

间距与尺寸(精确到 px)

  • 容器的 padding
  • 元素之间的 gap/margin
  • 组件的宽高(固定值还是百分比)

字体

  • 字号、字重、行高、字间距
  • 颜色(含透明度)

颜色

  • 背景色、文字色、边框色、阴影
  • 是否能映射到项目已有的 design token 或 Tailwind 颜色

交互状态(设计稿里有没有标注)

  • hover、focus、active、disabled
  • 没有标注的,按项目现有规范处理,不要自己发明

3. 实现顺序,不要乱

按这个顺序写代码,不要一上来就写细节:

  1. HTML 骨架:先把语义化结构搭出来,不加任何样式
  2. 布局:Flex/Grid 定位,保证对齐和间距
  3. 字体排版:字号、字重、行高、颜色
  4. 视觉装饰:背景、边框、圆角、阴影
  5. 交互状态:hover/focus/disabled
  6. 响应式:断点适配
  7. 动效:最后加,设计稿有说明才加

4. 遇到这些情况,按以下方式处理

设计稿里的颜色/字号在项目 token 里没有 → 先问用户:「这个颜色 #3B82F6 是不是对应 blue-500?」不要直接写魔法值 → 如果确认没有对应 token,用 CSS 变量命名(--color-brand-primary),便于后续统一

设计稿标注不清晰,看不出具体数值 → 说明哪里看不清,给出合理推测值,让用户确认:「这里间距看起来是 16px,对吗?」

设计稿有动效但没有说明 → 不要自己发明动效,问用户:「这里有过渡动画吗?如果有,持续时间和缓动函数是什么?」

实现后和设计稿有出入 → 主动说明差异和原因,不要假装没有:「这里字体用了系统字体代替,因为项目没有引入 Inter」

5. 还原度自检(提交前必做)

  • 关键尺寸与设计稿一致(容忍 1-2px 差异)
  • 字体、颜色与设计一致
  • 主要断点下布局正常,无错位
  • 可交互元素有明确的状态反馈(hover/focus/disabled)
  • 语义化 HTML(按钮用 <button>,链接用 <a>,不用 <div> 代替)
  • 图片有 alt 属性

输出约定

  • 使用项目现有技术栈(如 Next.js、Tailwind、SCSS、组件库)
  • 组件化:可复用部分拆成组件并命名清晰
  • 语义化 HTML + 合理 ARIA(按钮、链接、表单)
  • 必要时注明:某处与设计稿差异及原因(如兼容性、可访问性)

常用对照

设计稿 实现方式
8px 栅格 间距用 8 的倍数(8/16/24/32)
字体层级 对应 heading/body/caption 等语义类或 design token
模糊/毛玻璃 backdrop-filter + 半透明背景
多行截断 line-clamp 或 -webkit-line-clamp
安全区域 padding 配合 env(safe-area-inset-*)