Vercel 设计系统.
Vercel 设计系统 — 前端部署。黑白精准设计,Geist 字体。
在真实场景中查看
同一套设计 token 应用于不同类型的产物——网站、应用、幻灯片、海报。这些是用该系统重新换肤的原创样稿,而非截图。
it
real.
设计 token
56 个 token,符合 Open Design 的 token 契约——你的 agent 读取的正是这套结构化的配色、字体、间距和动效值,用以为任意产物设定主题。
表面
-
--bg#ffffff -
--surface#ffffff -
--surface-warmvar(--surface)
文本
-
--fg#171717 -
--fg-2#4d4d4d -
--muted#666666 -
--meta#808080
边框
-
--borderrgba(0, 0, 0, 0.08) -
--border-softrgba(0, 0, 0, 0.04)
强调色
-
--accent#0070f3 -
--accent-on#ffffff -
--accent-hovercolor-mix(in oklab, var(--accent), black 8%) -
--accent-activecolor-mix(in oklab, var(--accent), black 14%)
语义
-
--success#16a34a -
--warn#eab308 -
--danger#dc2626
字体排印
-
--font-display"Geist", "Geist Sans", -apple-system, "Segoe UI", Arial, sans-serif -
--font-body"Geist", "Geist Sans", -apple-system, "Segoe UI", Arial, sans-serif -
--font-mono"Geist Mono", ui-monospace, "SF Mono", "Roboto Mono", Menlo, Monaco, "Liberation Mono", "DejaVu Sans Mono", "Courier New", monospace
字号层级
-
--text-xs12px -
--text-sm14px -
--text-base16px -
--text-lg20px -
--text-xl24px -
--text-2xl32px -
--text-3xl40px -
--text-4xl48px -
--leading-body1.5 -
--leading-tight1.1 -
--tracking-display-0.05em
间距
-
--space-14px -
--space-28px -
--space-312px -
--space-416px -
--space-520px -
--space-624px -
--space-832px -
--space-1248px -
--section-y-desktop96px -
--section-y-tablet64px -
--section-y-phone48px
圆角
-
--radius-sm6px -
--radius-md8px -
--radius-lg12px -
--radius-pill9999px
层级阴影
-
--elev-flatnone -
--elev-ring0 0 0 1px var(--border) -
--elev-raised0 0 0 1px rgba(0, 0, 0, 0.08), 0 2px 2px rgba(0, 0, 0, 0.04), 0 8px 8px -8px rgba(0, 0, 0, 0.04), 0 0 0 1px #fafafa
聚焦
-
--focus-ring0 0 0 2px var(--accent)
动效
-
--motion-fast150ms -
--motion-base200ms -
--ease-standardcubic-bezier(0.2, 0, 0, 1)
布局
-
--container-max1200px -
--container-gutter-desktop24px -
--container-gutter-tablet16px -
--container-gutter-phone12px
Design System Inspired by Vercel
Category: 开发者工具 前端部署。黑白精准,Geist 字体。
1. Visual Theme & Atmosphere
Vercel 的网站是开发者基础设施”隐于无形”这一命题的视觉论文——一套克制到近乎哲学境界的设计体系。页面以大面积白色(#ffffff)配近黑色(#171717)文字为主调,营造出画廊般的空旷感,每一个元素都以像素为代价争得一席之地。这不是装饰性的极简主义,而是工程原则意义上的极简主义。Geist 设计体系对待界面的方式,如同编译器对待代码——剔除所有多余的标记,直到只剩结构。
定制字体家族 Geist 是整套体系的王冠。Geist Sans 在展示尺寸下采用极强的负字间距(-2.4px 至 -2.88px),所呈现的标题感觉紧凑、急迫、充满工程感——仿佛经过压缩优化的生产代码。在正文尺寸下,字间距有所放松,但几何精准感依然贯穿始终。Geist Mono 作为等宽配套字体,专为代码、终端输出和技术标签而生。两款字体均在全局启用 OpenType "liga"(连字),为排版增添了一层经得起细读的精致感。
Vercel 区别于其他单色设计体系的关键,在于其”阴影即边框”的理念。它并不使用传统 CSS 边框,而是采用 box-shadow: 0px 0px 0px 1px rgba(0,0,0,0.08)——零偏移、零模糊、1px 扩散的阴影,在不影响盒模型的前提下实现类边框效果。这一技术让边框存在于阴影层,从而实现更平滑的过渡、不会被裁剪的圆角,以及比传统边框更轻盈的视觉重量。整个深度体系建立在多值阴影叠加上,每一层各司其职:一层作边框,一层提供柔和的层次感,一层营造环境深度。
关键特征:
- Geist Sans 在展示尺寸下使用极强负字间距(-2.4px 至 -2.88px)——文字即压缩后的基础设施
- Geist Mono 用于代码和技术标签,全局启用 OpenType
"liga" - 阴影即边框技术:
box-shadow 0px 0px 0px 1px取代全局传统边框 - 多层阴影叠加实现细腻深度(单次声明包含边框 + 层次 + 环境三层)
- 近纯白画布搭配
#171717文字——并非纯黑,形成微妙的对比柔和感 - 工作流专属强调色:Ship 红(
#ff5b4f)、Preview 粉(#de1d8d)、Develop 蓝(#0a72ef) - 焦点环系统使用
hsla(212, 100%, 48%, 1)——饱和蓝色,确保无障碍可访问性 - 胶囊徽章(9999px 圆角)配色调背景,用于状态指示
2. Color Palette & Roles
Primary
- Vercel 黑(
#171717):主要文字、标题、深色表面背景。并非纯黑——微微的暖调防止视觉刺激。 - 纯白(
#ffffff):页面背景、卡片表面、深色背景上的按钮文字。 - 真黑(
#000000):次要用途,--geist-console-text-color-default,用于特定控制台/代码场景。
Workflow Accent Colors
- Ship 红(
#ff5b4f):--ship-text,“发布到生产”工作流步骤——温暖、紧迫的珊瑚红。 - Preview 粉(
#de1d8d):--preview-text,预览部署工作流——鲜艳的洋红粉。 - Develop 蓝(
#0a72ef):--develop-text,开发工作流——明亮、聚焦的蓝色。
Console / Code Colors
- 控制台蓝(
#0070f3):--geist-console-text-color-blue,语法高亮蓝色。 - 控制台紫(
#7928ca):--geist-console-text-color-purple,语法高亮紫色。 - 控制台粉(
#eb367f):--geist-console-text-color-pink,语法高亮粉色。
Interactive
- 链接蓝(
#0072f5):主要链接颜色,带下划线装饰。 - 焦点蓝(
hsla(212, 100%, 48%, 1)):--ds-focus-color,交互元素焦点环。 - 环蓝(
rgba(147, 197, 253, 0.5)):--tw-ring-color,Tailwind 环工具类。
Neutral Scale
- 灰 900(
#171717):主要文字、标题、导航文字。 - 灰 600(
#4d4d4d):次要文字、说明文案。 - 灰 500(
#666666):三级文字、静音链接。 - 灰 400(
#808080):占位符文字、禁用状态。 - 灰 100(
#ebebeb):边框、卡片轮廓、分隔线。 - 灰 50(
#fafafa):微妙表面色调、内阴影高光。
Surface & Overlay
- 遮罩背景(
hsla(0, 0%, 98%, 1)):--ds-overlay-backdrop-color,模态框/对话框背景。 - 选中文字(
hsla(0, 0%, 95%, 1)):--geist-selection-text-color,文字选中高亮。 - 徽章蓝背景(
#ebf5ff):胶囊徽章背景,带色调的蓝色表面。 - 徽章蓝文字(
#0068d6):胶囊徽章文字,更深的蓝色以保证可读性。
Shadows & Depth
- 边框阴影(
rgba(0, 0, 0, 0.08) 0px 0px 0px 1px):标志性技法——取代传统边框。 - 微浮层(
rgba(0, 0, 0, 0.04) 0px 2px 2px):卡片的最小悬浮感。 - 卡片叠层(
rgba(0,0,0,0.08) 0px 0px 0px 1px, rgba(0,0,0,0.04) 0px 2px 2px, rgba(0,0,0,0.04) 0px 8px 8px -8px, #fafafa 0px 0px 0px 1px):完整多层卡片阴影。 - 环形边框(
rgb(235, 235, 235) 0px 0px 0px 1px):标签页和图片的浅灰环形边框。
3. Typography Rules
Font Family
- 主字体:
Geist,备用字体:Arial, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol - 等宽字体:
Geist Mono,备用字体:ui-monospace, SFMono-Regular, Roboto Mono, Menlo, Monaco, Liberation Mono, DejaVu Sans Mono, Courier New - OpenType 特性:所有 Geist 文字全局启用
"liga";特定说明文字启用"tnum"以对齐数字。
Hierarchy
| 角色 | 字体 | 字号 | 字重 | 行高 | 字间距 | 备注 |
|---|---|---|---|---|---|---|
| 展示大标 | Geist | 48px (3.00rem) | 600 | 1.00–1.17(紧凑) | -2.4px 至 -2.88px | 最大压缩,视觉冲击力强 |
| 区块标题 | Geist | 40px (2.50rem) | 600 | 1.20(紧凑) | -2.4px | 功能区块标题 |
| 大号副标题 | Geist | 32px (2.00rem) | 600 | 1.25(紧凑) | -1.28px | 卡片标题、子区块 |
| 副标题 | Geist | 32px (2.00rem) | 400 | 1.50 | -1.28px | 较轻的副标题 |
| 卡片标题 | Geist | 24px (1.50rem) | 600 | 1.33 | -0.96px | 功能卡片 |
| 卡片标题(轻) | Geist | 24px (1.50rem) | 500 | 1.33 | -0.96px | 次要卡片标题 |
| 大号正文 | Geist | 20px (1.25rem) | 400 | 1.80(宽松) | normal | 介绍性文字、功能描述 |
| 正文 | Geist | 18px (1.13rem) | 400 | 1.56 | normal | 标准阅读文字 |
| 小号正文 | Geist | 16px (1.00rem) | 400 | 1.50 | normal | 标准 UI 文字 |
| 中号正文 | Geist | 16px (1.00rem) | 500 | 1.50 | normal | 导航、强调文字 |
| 半粗正文 | Geist | 16px (1.00rem) | 600 | 1.50 | -0.32px | 强调标签、激活状态 |
| 按钮/链接 | Geist | 14px (0.88rem) | 500 | 1.43 | normal | 按钮、链接、说明文字 |
| 小号按钮 | Geist | 14px (0.88rem) | 400 | 1.00(紧凑) | normal | 紧凑型按钮 |
| 说明文字 | Geist | 12px (0.75rem) | 400–500 | 1.33 | normal | 元数据、标签 |
| 等宽正文 | Geist Mono | 16px (1.00rem) | 400 | 1.50 | normal | 代码块 |
| 等宽说明 | Geist Mono | 13px (0.81rem) | 500 | 1.54 | normal | 代码标签 |
| 等宽小号 | Geist Mono | 12px (0.75rem) | 500 | 1.00(紧凑) | normal | text-transform: uppercase,技术标签 |
| 微型徽章 | Geist | 7px (0.44rem) | 700 | 1.00(紧凑) | normal | text-transform: uppercase,极小徽章 |
Principles
- 压缩即身份:Geist Sans 在展示尺寸下使用 -2.4px 至 -2.88px 的字间距——是所有主流设计体系中负字间距最激进的。这使文字呈现出_压缩_感,仿佛为生产环境优化过的代码。字间距随字号减小而逐渐放松:32px 时 -1.28px,24px 时 -0.96px,16px 时 -0.32px,14px 时恢复正常。
- 连字无处不在:每一处 Geist 文字均启用 OpenType
"liga"。连字并非装饰——它是结构性的,创造出更紧密、更高效的字形组合。 - 三种字重,严格分工:400(正文/阅读)、500(UI/交互)、600(标题/强调)。除极小徽章外不使用粗体(700)。这种窄字重范围通过字号和字间距构建层次感,而非依赖字重。
- 等宽即身份:大写的 Geist Mono 搭配
"tnum"或"liga",充当”开发者控制台”的声音——紧凑的技术标签将营销站与产品连接起来。
4. Component Stylings
Buttons
主要白色按钮(阴影边框)
- Background:
#ffffff - Text:
#171717 - Padding: 0px 6px(极小——由内容决定宽度)
- Radius: 6px(轻微圆角)
- Shadow:
rgb(235, 235, 235) 0px 0px 0px 1px(环形边框) - Hover: 背景切换为
var(--ds-gray-1000)(深色) - Focus:
2px solid var(--ds-focus-color)外轮廓 +var(--ds-focus-ring)阴影 - 用途:标准次要按钮
主要深色按钮(源自 Geist 体系推断)
- Background:
#171717 - Text:
#ffffff - Padding: 8px 16px
- Radius: 6px
- 用途:主要行动按钮(“Start Deploying”、“Get Started”)
胶囊按钮/徽章
- Background:
#ebf5ff(带色调的蓝色) - Text:
#0068d6 - Padding: 0px 10px
- Radius: 9999px(完整胶囊)
- Font: 12px 字重 500
- 用途:状态徽章、标签、功能标注
大号胶囊(导航)
- Background: 透明或
#171717 - Radius: 64px–100px
- 用途:标签页导航、区块选择器
Cards & Containers
- Background:
#ffffff - 边框:通过阴影实现——
rgba(0, 0, 0, 0.08) 0px 0px 0px 1px - Radius: 8px(标准),12px(特色/图片卡片)
- 阴影叠层:
rgba(0,0,0,0.08) 0px 0px 0px 1px, rgba(0,0,0,0.04) 0px 2px 2px, #fafafa 0px 0px 0px 1px - 图片卡片:
1px solid #ebebeb,顶部 12px 圆角 - Hover:阴影轻微加深
Inputs & Forms
- 单选框:标准样式,焦点时
var(--ds-gray-200)背景 - 焦点阴影:
1px 0 0 0 var(--ds-gray-alpha-600) - 焦点外轮廓:
2px solid var(--ds-focus-color)——统一的蓝色焦点环 - 边框:通过阴影技术实现,而非传统边框
Navigation
- 白色背景上的简洁水平导航,吸顶固定
- Vercel 字标左对齐,262x52px
- 链接:Geist 14px 字重 500,
#171717文字 - 激活状态:字重 600 或下划线
- 行动按钮:深色胶囊按钮(“Start Deploying”、“Contact Sales”)
- 移动端:汉堡菜单折叠
- 产品下拉菜单支持多级展开
Image Treatment
- 产品截图带
1px solid #ebebeb边框 - 顶部圆角图片:
12px 12px 0px 0px圆角 - 仪表板/代码预览截图主导功能区块
- 英雄图片后方带柔和渐变背景(多色粉彩)
Distinctive Components
工作流管线
- 三步水平管线:Develop(开发)→ Preview(预览)→ Ship(发布)
- 每个步骤有专属强调色:蓝色 → 粉色 → 红色
- 通过线条/箭头连接
- Vercel 核心价值主张的视觉隐喻
信任栏/Logo 网格
- 合作公司 Logo(Perplexity、ChatGPT、Cursor 等)以灰度展示
- 横向滚动或网格布局
- 用
#ebebeb边框轻微分隔
指标卡片
- 大号数字展示(如”10x faster”)
- Geist 48px 字重 600 展示指标
- 下方配灰色正文描述
- 阴影边框卡片容器
5. Layout Principles
Spacing System
- 基础单位:8px
- 刻度:1px、2px、3px、4px、5px、6px、8px、10px、12px、14px、16px、32px、36px、40px
- 显著跳跃:从 16px 直接跳到 32px——主刻度中没有 20px 或 24px
Grid & Container
- 内容最大宽度:约 1200px
- 英雄区:居中单列,顶部留有充足 padding
- 功能区:卡片采用 2–3 列网格
- 全宽分隔线使用
border-bottom: 1px solid #171717 - 代码/仪表板截图以全宽或带边框的方式展示
Whitespace Philosophy
- 画廊式空旷感:区块间有大量垂直留白(80px–120px+)。留白本身即设计——它传达出 Vercel 无需证明、无需掩饰的从容。
- 文字紧凑,空间宽阔:标题上极强的负字间距与周围充裕的留白形成对位关系。文字密集,而环绕的空间辽阔。
- 区块节奏:白色区块与白色区块交替——区块间没有颜色变化。分隔依靠边框(阴影边框)和间距来实现。
Border Radius Scale
- 微型(2px):行内代码片段、小号标签
- 细微(4px):小型容器
- 标准(6px):按钮、链接、功能元素
- 舒适(8px):卡片、列表项
- 图片(12px):特色卡片、图片容器(顶部圆角)
- 大号(64px):标签页导航胶囊
- 超大(100px):大号导航链接
- 完整胶囊(9999px):徽章、状态胶囊、标签
- 圆形(50%):菜单切换按钮、头像容器
6. Depth & Elevation
| 层级 | 处理方式 | 用途 |
|---|---|---|
| 平面(Level 0) | 无阴影 | 页面背景、文字块 |
| 环形(Level 1) | rgba(0,0,0,0.08) 0px 0px 0px 1px | 大多数元素的阴影即边框 |
| 浅色环形(Level 1b) | rgb(235,235,235) 0px 0px 0px 1px | 标签页和图片的较浅环形 |
| 微卡片(Level 2) | 环形 + rgba(0,0,0,0.04) 0px 2px 2px | 带最小浮起感的标准卡片 |
| 完整卡片(Level 3) | 环形 + 微浮 + rgba(0,0,0,0.04) 0px 8px 8px -8px + 内层 #fafafa 环 | 特色卡片、高亮面板 |
| 焦点(无障碍) | 2px solid hsla(212, 100%, 48%, 1) 外轮廓 | 所有交互元素的键盘焦点 |
阴影哲学:Vercel 拥有现代 Web 设计中可以说是最精妙的阴影体系。它并非以 Material Design 的传统方式用阴影表达高度,而是通过多值阴影叠加,让每一层承担独特的架构职能:一层制造”边框”(0px 扩散,1px),一层添加环境柔和感(2px 模糊),一层处理远距深度(8px 模糊带负扩散),还有一层内层环(#fafafa)形成微妙的高光,让卡片”由内而外地发光”。这种层叠方式使卡片呈现出被精心构建的质感,而非漂浮感。
Decorative Depth
- 英雄渐变:英雄内容后方柔和的多色粉彩渐变(几乎不可见,营造氛围)
- 区块边框:主要区块之间用
1px solid #171717(完整深色线)分隔 - 无背景色变化——深度完全来自阴影叠加与边框对比
7. Do’s and Don’ts
Do
- 在展示尺寸使用带强负字间距的 Geist Sans(48px 时 -2.4px 至 -2.88px)
- 使用阴影即边框(
0px 0px 0px 1px rgba(0,0,0,0.08))而非传统 CSS 边框 - 在所有 Geist 文字上启用
"liga"——连字是结构性的,不可省略 - 使用三字重体系:400(正文)、500(UI)、600(标题)
- 仅在对应的工作流场景中使用工作流强调色(红/粉/蓝)
- 为卡片使用多层阴影叠加(边框 + 层次 + 环境 + 内层高光)
- 保持色板的消色差调——从
#171717到#ffffff的灰色系就是整个体系 - 主要文字用
#171717而非#000000——微弱的暖调至关重要
Don’t
- 不要在 Geist Sans 上使用正字间距——永远是负值或零
- 不要在正文使用字重 700(粗体)——600 是上限,仅用于标题
- 不要在卡片上使用传统 CSS
border——使用阴影边框技术 - 不要在 UI 主体中引入暖色(橙色、黄色、绿色)
- 不要将工作流强调色(Ship 红、Preview 粉、Develop 蓝)用于装饰目的
- 不要使用过重的阴影(不透明度 > 0.1)——该阴影体系的基调是耳语级别
- 不要增大正文字间距——Geist 本就设计为紧排
- 不要在主要行动按钮上使用胶囊圆角(9999px)——胶囊只用于徽章/标签
- 不要省略卡片阴影中的内层
#fafafa环——正是它造就了整套体系的内发光效果
8. Responsive Behavior
Breakpoints
| 名称 | 宽度 | 关键变化 |
|---|---|---|
| 小屏手机 | <400px | 紧凑单列,最小 padding |
| 手机 | 400–600px | 标准移动端,堆叠布局 |
| 小平板 | 600–768px | 开始出现两列网格 |
| 平板 | 768–1024px | 完整卡片网格,扩展 padding |
| 小桌面 | 1024–1200px | 标准桌面布局 |
| 桌面 | 1200–1400px | 完整布局,最大内容宽度 |
| 大屏桌面 | >1400px | 居中,充裕边距 |
Touch Targets
- 按钮使用舒适的 padding(垂直 8px–16px)
- 导航链接 14px,间距充足
- 胶囊徽章水平 padding 10px,满足点击目标需求
- 移动端菜单切换按钮使用 50% 圆角圆形按钮
Collapsing Strategy
- 英雄区:展示字号 48px → 按比例缩小,负字间距等比保持
- 导航:水平链接 + 行动按钮 → 汉堡菜单
- 功能卡片:三列 → 两列 → 单列堆叠
- 代码截图:保持宽高比,可能出现横向滚动
- 信任栏 Logo:网格 → 横向滚动
- 页脚:多列 → 单列堆叠
- 区块间距:80px+ → 移动端缩减至 48px
Image Behavior
- 仪表板截图在各尺寸下保持边框处理
- 英雄渐变在移动端变得更柔和/简化
- 产品截图使用响应式图片,保持一致圆角
- 全宽区块在各端保持边到边的处理方式
9. Agent Prompt Guide
Quick Color Reference
- 主要行动按钮:Vercel 黑(
#171717) - 背景:纯白(
#ffffff) - 标题文字:Vercel 黑(
#171717) - 正文:灰 600(
#4d4d4d) - 边框(阴影):
rgba(0, 0, 0, 0.08) 0px 0px 0px 1px - 链接:链接蓝(
#0072f5) - 焦点环:焦点蓝(
hsla(212, 100%, 48%, 1))
Example Component Prompts
- “在白色背景上创建英雄区。标题 48px Geist 字重 600,行高 1.00,字间距 -2.4px,颜色 #171717。副标题 20px Geist 字重 400,行高 1.80,颜色 #4d4d4d。深色行动按钮(#171717,6px 圆角,8px 16px padding)和幽灵按钮(白色,阴影边框 rgba(0,0,0,0.08) 0px 0px 0px 1px,6px 圆角)。”
- “设计一张卡片:白色背景,不使用 CSS border。使用阴影叠层:rgba(0,0,0,0.08) 0px 0px 0px 1px, rgba(0,0,0,0.04) 0px 2px 2px, #fafafa 0px 0px 0px 1px。圆角 8px。标题 24px Geist 字重 600,字间距 -0.96px。正文 16px 字重 400,#4d4d4d。”
- “创建胶囊徽章:#ebf5ff 背景,#0068d6 文字,9999px 圆角,0px 10px padding,12px Geist 字重 500。”
- “创建导航:白色吸顶头部。Geist 14px 字重 500 的链接,#171717 文字。右对齐深色胶囊行动按钮 ‘Start Deploying’。底部阴影边框:rgba(0,0,0,0.08) 0px 0px 0px 1px。”
- “设计一个展示三步骤的工作流区块:Develop(文字颜色 #0a72ef)、Preview(#de1d8d)、Ship(#ff5b4f)。每个步骤:14px Geist Mono 大写标签 + 24px Geist 字重 600 标题 + 16px 字重 400 描述,颜色 #4d4d4d。“
Iteration Guide
- 始终用阴影即边框代替 CSS border——
0px 0px 0px 1px rgba(0,0,0,0.08)是基础 - 字间距随字号变化:48px 时 -2.4px,32px 时 -1.28px,24px 时 -0.96px,14px 时恢复正常
- 仅使用三种字重:400(阅读)、500(交互)、600(强调)
- 颜色是功能性的,非装饰性的——工作流颜色(红/粉/蓝)仅标记管线阶段
- 卡片阴影中的内层
#fafafa环是赋予 Vercel 卡片微妙内发光的关键 - 技术标签用 Geist Mono 大写,其余一律用 Geist Sans
标签
design-systemfirst-partydesigndeveloper-tools