OpenDesign Figma 设计系统解析:黑白画布上的可变字体排版与胶囊几何实战指南
【免费下载链接】open-design🎨 Best DeepSeek Harness Design Plugin. The open-source Claude Design alternative. 🖥️ Local-first desktop app. 🖼️ Your coding agent becomes the design engine: prototypes, landing pages, dashboards, slides, images & video — real files, HTML/PDF/PPTX/MP4 export. 🤖 Claude Code / Codex / Cursor / DeepSeek Harness / OpenCode & 20+ CLIs via BYOK.项目地址: https://gitcode.com/gh_mirrors/opend/open-design
灵感源自 Figma 的设计系统(Design & Creative 类别)是 OpenDesign 设计系统库中的一个完整可复用品牌包。本指南以
design-systems/figma/DESIGN-zh.md为骨架,结合仓库内的 tokens.css、components.html、design-tokens.json 与 tailwind-v4.css 等源码级产物,系统讲解该系统的视觉哲学、色彩与排版规则、组件规格、布局与响应式策略,并给出可直接复用的 CSS Token 绑定、Tailwind v4 映射和智能体提示模板。读完本文,你可以完整复刻一套"黑白界面外壳 + 多彩产品内容"的 Figma 风格站点,也能理解 OpenDesign 设计系统包从规格文档到可运行 Token 的落地链路。
1. 系统概览:为什么 Figma 的设计系统值得单独成包
在 OpenDesign 的设计系统目录(design-systems/)中,figma是一个被完整"打包"的品牌系统:它不仅有一份规格文档,还附带了结构化 Token 样式表、组件清单、预览页与审计报告。从 manifest.json 可以看到,该包的importMode为normalized,核心文件包括:
- 规格文档:
DESIGN.md(及多语言版本DESIGN-zh.md等),定义视觉意图、约束与反模式; - Token 绑定:
tokens.css(唯一事实来源)与派生产物design-tokens.json、tailwind-v4.css; - 组件实现:
components.html(参考组件 fixture)与components.manifest.json(组件清单); - 预览与审计:
preview/下的 colors/typography/spacing 三页可视化校验,source/token-contract.report.json逐条映射 Token 声明来源。
Figma 系统在美学上的核心命题是一组二元对立:界面外壳严格黑白(字面上只有#000000与#ffffff),而英雄区与产品展示区则爆发出电光绿、亮黄、深紫、热粉的多色渐变。正如 tokens.css 头部注释所总结的:"Monochrome interface absolutely — pure black for all text, borders, and solid buttons; pure white for all backgrounds; no mid-tones in the chrome layer whatsoever"。设计系统本身是无色的,它把产品的多彩输出当作核心内容——营销页面本质上是一面陈列彩色艺术作品的白色画廊墙。
2. 核心视觉特征:可变字重、黑白外壳与胶囊几何
DESIGN-zh 文档列出的核心特征,每一项都在仓库源码中得到了对应实现:
| 特征 | 规格来源 | 源码佐证 |
|---|---|---|
| 自定义可变字体 figmaSans,非常规字重停驻点 320/330/340/450/480/540/700 | DESIGN 第 1 节 | tokens.css字体栈、components.html中font-weight: 330/480/540的实际使用 |
| 严格黑白的界面外壳 | DESIGN 第 1、2 节 | tokens.css中--fg: #000000、--bg: #ffffff |
| figmaMono 大写技术标签 + 宽字母间距 | DESIGN 第 1 节 | components.html.mono-label:letter-spacing: 0.54px |
| 胶囊(50px)与圆形(50%)按钮几何 | DESIGN 第 1 节 | components.html中border-radius: var(--radius-sm)(= 50px) |
| 虚线 2px 聚焦轮廓 | DESIGN 第 1 节 | components.html.btn:focus-visible { outline: 2px dashed var(--fg) } |
OpenType"kern"全局启用 | DESIGN 第 1 节 | components.htmlbody 与.btn、.tab均声明font-feature-settings: "kern" |
| 全局负字母间距(正文 -0.14px 至 -0.26px) | DESIGN 第 1 节 | .lead使用letter-spacing: -0.007em,h2/h3 使用负 em 值 |
可变字体是这套系统的"设计本体"。文档强调:figmaSans 在极细(320)与粗体(700)之间无缝切换,并在大多数字体系统从不涉足的中间值(330、340、450、480、540)处设有停驻点。330 与 340 之间的差异几乎无法察觉,却在结构上意义重大——层级通过微小差异构建,而非"常规与粗体"这种粗放手段。这在components.html中有直接体现:卡片标题h3使用font-weight: 540,正文.lead使用font-weight: 330,功能卡片标题使用font-weight: 700,而页面 h1/h2 基重为 400。
3. 色彩方案:二元色板与渐变系统
3.1 主色与表面
DESIGN 文档将 Figma 的色彩系统描述为纯粹的二元体系:
- 纯黑
#000000:所有文字、实色按钮、边框——界面唯一的"颜色"; - 纯白
#ffffff:所有背景、白色按钮、深色表面上的文字; - 玻璃黑
rgba(0, 0, 0, 0.08):次要圆形按钮的微妙深色叠加(源码中对应--accent-active); - 玻璃白
rgba(255, 255, 255, 0.16):深色/彩色表面上按钮的磨砂玻璃叠加。
在tokens.css中,这套二元系统被编码为结构化的语义 Token:
:root { /* ─── Surface ─────────────────────────────────────────────── */ --bg: #ffffff; --surface: #ffffff; /* gallery wall — no surface tint */ --surface-warm: var(--surface); /* no warm tier in B&W system */ /* ─── Foreground ───────────────────────────────────────────── */ --fg: #000000; --fg-2: #000000; /* B&W — no secondary ink tier */ --muted: rgba(0, 0, 0, 0.55); /* secondary text on white */ --meta: rgba(0, 0, 0, 0.40); /* metadata, captions */ /* ─── Border ───────────────────────────────────────────────── */ --border: rgba(0, 0, 0, 0.12); /* minimal — only where structurally needed */ --border-soft: rgba(0, 0, 0, 0.06); /* ─── Accent ───────────────────────────────────────────────── */ /* In a strictly B&W system, black IS the accent (solid CTA). */ --accent: #000000; --accent-on: #ffffff; --accent-hover: rgba(0, 0, 0, 0.85); --accent-active: rgba(0, 0, 0, 0.08); /* glass dark — secondary button bg */ }需要注意几个从源码中可确认的设计决策:--surface-warm直接别名--surface(黑白系统没有暖色调层级);--fg-2与--fg同为纯黑(没有次级墨色层级);黑色本身就是强调色(--accent: #000000),这与大多数强调色取高饱和彩色的系统截然不同。design-tokens.json的审计摘要也印证了这一结构:56 个 Token 全部有源码支撑,分为 A1-identity(身份层,8 个)、A1-structure(结构层,18 个)、A2(26 个)与 B-slot(4 个)四层,综合评分 100、评级 excellent。
3.2 渐变系统与语义色
- 英雄渐变:电光绿、亮黄、深紫、热粉构成的多停驻点渐变,是英雄区的视觉标志——代表工具"无限的创意可能";
- 产品区域渐变:Design、Dev Mode、Prototyping 等产品区域可使用各自独特的色彩主题。
有趣的是,仓库同时保留了语义状态色--success: #16a34a、--warn: #eab308、--danger: #dc2626,说明黑白外壳之下仍需要必要的功能状态表达(如表单校验、加载提示),这些颜色不用于装饰,而用于传达状态语义。
4. 排版规则:可变字重的精准控制
4.1 字体族
- 主字体:
figmaSans,备选figmaSans Fallback, SF Pro Display, system-ui, helvetica; - 等宽体/标签:
figmaMono,备选figmaMono Fallback, SF Mono, menlo。
在tokens.css中对应为:
--font-display: "figmaSans", "figmaSans Fallback", "SF Pro Display", system-ui, Helvetica, sans-serif; --font-body: "figmaSans", "figmaSans Fallback", "SF Pro Display", system-ui, Helvetica, sans-serif; --font-mono: "figmaMono", "figmaMono Fallback", "SF Mono", Menlo, ui-monospace, monospace;4.2 完整层级表(继承自 DESIGN-zh 文档)
| 角色 | 字体 | 尺寸 | 字重 | 行高 | 字母间距 | 备注 |
|---|---|---|---|---|---|---|
| 展示/英雄 | figmaSans | 86px (5.38rem) | 400 | 1.00(紧凑) | -1.72px | 最大冲击力,极端字距 |
| 区块标题 | figmaSans | 64px (4rem) | 400 | 1.10(紧凑) | -0.96px | 功能区块标题 |
| 副标题 | figmaSans | 26px (1.63rem) | 540 | 1.35 | -0.26px | 强调区块文字 |
| 轻量副标题 | figmaSans | 26px (1.63rem) | 340 | 1.35 | -0.26px | 轻字重区块文字 |
| 功能标题 | figmaSans | 24px (1.5rem) | 700 | 1.45 | normal | 粗体卡片标题 |
| 大号正文 | figmaSans | 20px (1.25rem) | 330–450 | 1.30–1.40 | -0.1px 至 -0.14px | 描述、引言 |
| 正文/按钮 | figmaSans | 16px (1rem) | 330–400 | 1.40–1.45 | -0.14px 至 normal | 标准正文、导航、按钮 |
| 轻量正文 | figmaSans | 18px (1.13rem) | 320 | 1.45 | -0.26px 至 normal | 轻字重正文 |
| 等宽标签 | figmaMono | 18px (1.13rem) | 400 | 1.30(紧凑) | 0.54px | 大写区块标签 |
| 等宽小号 | figmaMono | 12px (0.75rem) | 400 | 1.00(紧凑) | 0.6px | 大写微型标签 |
在tokens.css中,类型刻度被编码为--text-xs: 12px到--text-4xl: 86px的 Token,并配套--leading-tight: 1.00(86px 英雄区行高)、--tracking-display: -0.02em(= -1.72px / 86px 归一化)等排印控制参数。components.html中的实际实现与文档精确对齐:h1 使用var(--text-4xl)与var(--tracking-display),h2 为 64px/行高 1.10/字距 -0.015em,h3 为 26px/行高 1.35/字距 -0.01em/字重 540。
4.3 排版原则(源码可验证的 5 条铁律)
- 可变字体精准性:使用 320、330、340、450、480、540 等非常规停驻点,通过微差构建层级;
- 轻体为基础:多数正文用 320–340(比典型 400"常规"更轻),营造空灵通透的阅读体验;
- 处处字距微调:所有文字元素启用 OpenType
"kern"——字距微调不是可选项而是结构性要求(components.html在body、h1/h2/h3、.btn、.tab中均声明font-feature-settings: "kern"); - 默认负字距:正文使用 -0.1px 至 -0.26px 字母间距,展示文字进一步压缩至 -0.96px 与 -1.72px;
- 等宽字体用于结构:figmaMono 大写 + 正字母间距(0.54px–0.6px),承担技术指示牌标签角色。
5. 组件规格:按钮、标签栏、卡片与焦点指示
5.1 四态按钮矩阵(完整继承自 DESIGN-zh)
| 按钮类型 | 背景 | 文字 | 圆角 | 内边距 | 聚焦 | 用途 |
|---|---|---|---|---|---|---|
| 黑色实色(胶囊) | #000000 | #ffffff | 圆形(50%)用于图标按钮 | — | 虚线 2px | 最强调 CTA |
| 白色胶囊 | #ffffff | #000000 | 胶囊(50px) | 8px 18px 10px(不对称垂直) | 虚线 2px | 深色/彩色表面上的标准 CTA |
| 玻璃深色 | rgba(0,0,0,0.08) | 纯黑 | 圆形(50%) | — | 虚线 2px | 浅色表面上的次要操作 |
| 玻璃浅色 | rgba(255,255,255,0.16) | 纯白 | 圆形(50%) | — | 虚线 2px | 深色/彩色表面上的次要操作 |
components.html中的.btn-black/.btn-white给出了可复制的实现:基础.btn类使用border-radius: var(--radius-sm)(50px 胶囊)、font-feature-settings: "kern"、transition: background-color var(--motion-fast) var(--ease-standard)(150ms / cubic-bezier(0.2, 0, 0, 1));聚焦态通过:focus-visible { outline: 2px dashed var(--fg); outline-offset: 2px }实现。
5.2 产品标签栏(Tab Bar)
- 水平胶囊标签(50px 圆角),每个标签代表一个产品区域(Design、Dev Mode、Prototype、Slides);
- 激活态:黑底白字(
.tab.active { background: var(--fg); color: var(--accent-on) }); - 非激活态:透明底黑字(
.tab { background: transparent; color: var(--fg) }),悬停叠加rgba(0,0,0,0.06); - 标签文字使用 figmaSans 20px 字重 480(
components.html中.tab的font-weight: 480即对应 DESIGN 文档的"20px figmaSans 字重 480"示例提示)。
5.3 卡片与虚线焦点指示器
- 卡片:白底、
border-radius: var(--radius-md)(8px)、padding: var(--space-6)(24px)、box-shadow: var(--elev-raised)(0 4px 16px rgba(0,0,0,0.08)); - 虚线聚焦:所有交互元素聚焦时使用
dashed 2px轮廓,引用 Figma 编辑器中的选择手柄——这是一种把网站与产品相连接的元设计选择。components.html头部注释明确写道 "Figma's signature: dashed 2px outline encoded at component level",而--focus-ring(0 0 0 2px rgba(0,0,0,0.8))仅作为键盘导航的兜底阴影。
根据 components.manifest.json 的组件分组审计,该 fixture 包含 34 个选择器、17 个类、19 个元素,覆盖 buttons、inputs、cards、links、icons、typography、layout 七个组件组(badges 与 keyboard 组未实现)。
6. 布局与间距:8px 基准、画廊式留白与圆角比例
6.1 间距系统
- 基础单位:8px;
- 完整刻度:1px、2px、4px、4.5px、8px、10px、12px、16px、18px、24px、32px、40px、46px、48px、50px。
在tokens.css中对应--space-1: 4px至--space-12: 48px的结构化间距 Token,并额外提供区块节奏参数:桌面--section-y-desktop: 96px、平板--section-y-tablet: 64px、手机--section-y-phone: 40px。components.html用section { padding-block: var(--section-y-desktop) }与section + section { border-top: 1px solid var(--border) }实现"画廊式"分区节奏——每个产品区块如同独立展品般自由呼吸。
6.2 网格与容器
- 最大容器宽度:1920px(
--container-max); - 容器内边距(gutter):桌面 40px / 平板 24px / 手机 16px;
- 英雄区:全宽渐变、内容居中;产品区:交替展示;页脚:深色全宽区块;
- 响应式范围:559px 至 1920px。
components.html中的.container、.hero-grid(桌面两列,1023px 以下单列)、.features-grid(桌面三列 → 平板两列 → 手机单列)提供了上述规则的直接实现样例。
6.3 圆角比例
| 档位 | 数值 | 用途 |
|---|---|---|
| 极小 | 2px | 小型链接元素 |
| 微妙 | 6px | 小型容器、分隔线 |
| 舒适 | 8px | 卡片、图片、对话框 |
| 胶囊 | 50px | 标签按钮、CTA |
| 圆形 | 50% | 图标按钮、圆形元素 |
对应 Token:--radius-sm: 50px(胶囊——所有交互元素)、--radius-md/--radius-lg: 8px(卡片容器)、--radius-pill: 9999px。
6.4 深度与层次
| 层级 | 处理方式 | 用途 |
|---|---|---|
| 平坦(层级 0) | 无阴影 | 页面背景、大多数文字 |
| 表面(层级 1) | 渐变/深色区块上的白色卡片 | 卡片、产品展示 |
| 抬升(层级 2) | 微妙阴影 | 悬浮卡片、悬停状态 |
阴影哲学:Figma 节制地使用阴影,主要深度机制是背景对比(彩色/深色区块上的白色内容)以及产品截图本身固有的立体感。tokens.css只提供三个层级 Token:--elev-flat: none、--elev-ring: 0 0 0 1px var(--border)、--elev-raised: 0 4px 16px rgba(0,0,0,0.08),从侧面证实了这一克制。
7. 应为与不为:给实现者与智能体的硬性约束
应为
- 使用 figmaSans 配合精准的可变字重(320–540)——细粒度字重控制即是设计本身;
- 保持界面严格的黑白配色——颜色仅来自产品内容;
- 对所有交互元素使用胶囊(50px)和圆形(50%)几何造型;
- 应用虚线 2px 聚焦轮廓——标志性的无障碍模式;
- 在所有文字上启用
"kern"特性; - 将 figmaMono 以大写形式配合正字母间距用于标签;
- 全局应用负字母间距(-0.1px 至 -1.72px)。
不为
- 不要添加界面颜色——单色调色板是绝对的;
- 不要使用标准字重(400、500、600、700)——使用可变字体的独特停驻点(320、330、340、450、480、540);
- 不要在按钮上使用尖锐角落——仅使用胶囊和圆形几何造型;
- 不要使用实线聚焦轮廓——虚线才是标志;
- 不要将正文字重提高至 450 以上——轻字重美学是核心;
- 不要在正文使用正字母间距——它始终为负值。
USAGE.md 还补充了面向实现者的三条工程约束:保留 schema Token 名称以保证跨品牌切换可靠;避免在复制的:rootToken 块之外使用裸 hex 值;不要绕过tokens.css独立重新定义 Tailwind 或设计 Token 值。
8. 响应式策略:断点与折叠行为
| 断点名称 | 宽度 | 主要变化 |
|---|---|---|
| 小屏手机 | <560px | 紧凑布局,堆叠排列 |
| 平板 | 560–768px | 微调 |
| 小桌面 | 768–960px | 两列布局 |
| 桌面 | 960–1280px | 标准布局 |
| 大桌面 | 1280–1440px | 扩展 |
| 超宽屏 | 1440–1920px | 最大宽度 |
折叠策略:
- 英雄文字:86px → 64px → 48px;
- 产品标签:移动端水平滚动;
- 功能区块:堆叠单列;
- 页脚:多列 → 堆叠。
从components.html的实现看,仓库实际采用 1023px 与 639px 两个媒体查询断点来驱动容器 gutter(40→24→16px)、区块纵向节奏(96→64→40px)与栅格列数(hero 2→1 列、features 3→2→1 列)的降级,与文档的断点体系在语义上保持一致。
9. 从规格到代码:OpenDesign 包的三层落地链路
Figma 包的工程化价值在于它把设计文档翻译成了三层可消费产物,source/evidence.md明确记录了这条链路:
- 规格层:
DESIGN.md(含多语言版本)承载视觉意图、约束与反模式,是唯一事实来源之一; - Token 层:
tokens.css声明全部 CSS 自定义属性,source/token-contract.report.json将每个 TOKEN_SCHEMA 绑定逐条映射回tokens.css的声明行,design-tokens.json汇总 56 个 Token 及其置信度与来源;tailwind-v4.css通过@theme块将 Token 重新暴露为 Tailwind 主题变量(如--color-fg、--font-sans、--spacing-section-desktop、--radius-pill、--shadow-raised); - 组件层:
components.html提供可运行的参考实现,components.manifest.json提供组件清单(34 个选择器、7 个组件组)供智能体在发明新控件前优先复用。
这套"文档 → Token → 组件"的三层结构,正是 OpenDesign 设计系统包的标准契约(schemaVersion: od-design-system-project/v1):开发者或智能体只需粘贴tokens.css到首个产物<style>块,再依据components.manifest.json组装组件,即可快速复刻完整的 Figma 风格界面。
10. 智能体提示指南:可直接使用的 Prompt 模板
DESIGN-zh 文档最后提供了面向智能体的快速参考,这里完整保留并补充实现要点:
快速颜色参考
- 全部:「纯黑(#000000)」与「纯白(#ffffff)」
- 玻璃深色:「rgba(0, 0, 0, 0.08)」
- 玻璃浅色:「rgba(255, 255, 255, 0.16)」
示例组件提示
- "在鲜活的多色渐变(绿、黄、紫、粉)上创建一个英雄区。标题为 86px figmaSans 字重 400,行高 1.0,字母间距 -1.72px。白色文字。白色胶囊 CTA 按钮(50px 圆角,8px 18px 内边距)。"
- "设计一个带胶囊形按钮的产品标签栏(50px 圆角)。激活态:黑色背景,白色文字。非激活态:透明,黑色文字。figmaSans 20px 字重 480。"
- "构建一个区块标签:figmaMono 18px,大写,字母间距 0.54px,黑色文字。启用字距微调。"
- "创建 20px figmaSans 字重 330 的正文,行高 1.40,字母间距 -0.14px。白底纯黑文字。"
迭代指南
- 精确使用可变字体字重停驻点:320、330、340、450、480、540、700;
- 界面始终黑白——绝不为外壳添加颜色;
- 虚线聚焦轮廓,不用实线;
- 正文字母间距始终为负,等宽标签始终为正;
- 按钮/标签用胶囊(50px),图标按钮用圆形(50%)。
工程落地建议:将这些提示与tokens.css结合使用时,直接把 Token 块粘贴进产物<style>即可保证数值一致性;需要 Tailwind 场景时引入 tailwind-v4.css 的@theme映射;视觉回归可通过 preview/colors.html、preview/typography.html、preview/spacing.html 三页快速目检。
11. 延伸阅读
- 中文规格原文:design-systems/figma/DESIGN-zh.md(英文版见 DESIGN.md)
- 包使用契约:design-systems/figma/USAGE.md
- Token 样式表:design-systems/figma/tokens.css
- 参考组件实现:design-systems/figma/components.html 与组件清单 components.manifest.json
- Token 审计与派生产物:design-tokens.json、tailwind-v4.css、source/token-contract.report.json
- 同目录下其他品牌的系统包(airbnb、apple、stripe、vercel 等)与总览文档 design-systems/README.md
【免费下载链接】open-design🎨 Best DeepSeek Harness Design Plugin. The open-source Claude Design alternative. 🖥️ Local-first desktop app. 🖼️ Your coding agent becomes the design engine: prototypes, landing pages, dashboards, slides, images & video — real files, HTML/PDF/PPTX/MP4 export. 🤖 Claude Code / Codex / Cursor / DeepSeek Harness / OpenCode & 20+ CLIs via BYOK.项目地址: https://gitcode.com/gh_mirrors/opend/open-design
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考