同样一句"帮我做个网页",为什么有的出来像玩具,有的像正经产品?因为没有"万能好看"。好看是对场景的适配。这张卡先教你判断"这是个什么产品",再决定圆角多大、颜色多艳、动画多少。你不用写代码,但要能把这些判断准确地讲给你的 Agent(智能体,听你指挥干活的 AI)听,让它比"随手生成"更对味。
动手做任何设计之前,先在心里给产品定位四个维度。它们决定后面所有选择:颜色、圆角、动画、信息密度。
| 维度 | 两端(光谱) | 它影响什么 |
|---|---|---|
| 受众(Audience) | 面向大众消费者(B2C) 到 面向企业(B2B) | 情绪基调、信任信号、信息密度 |
| 语气(Tone) | 活泼好玩 到 严肃专业 | 圆角大小、颜色饱和度、动画、文案口吻 |
| 交互丰富度 (Interaction richness) | 静态/极简 到 动效/沉浸 | 过渡动画预算、微交互密度、加载方式 |
| 复杂度(Complexity) | 简单(一个动作) 到 复杂(多步骤、数据密集) | 渐进展开、导航深度、信息分层 |
放到我们的命题 Steve's Repair(电脑修理店)上:它是给街坊邻居看的官网,受众偏大众,语气可以亲切但要让人信得过,交互不必花哨,一页就把"能修什么、怎么预约"讲清楚。所以它该偏"友好但可信",而不是冷冰冰的企业后台风,也不是花里胡哨的游戏风。
视觉特征:高饱和度、圆润形状、有吉祥物/角色、游戏化元素、用颜色调动情绪。
多邻国(Duolingo,语言学习 App)案例里的几个做法:
B2C 大众风的"长相",下面是真实渲染的对照(同一家 Steve's Repair,换成消费友好风格的卡片):
给 B2C 大众风的"品味参数"(讲给 Agent 用):
| 圆角 | 卡片 12 到 16px;按钮、徽章 999px(药丸形) |
|---|---|
| 阴影 | 带品牌色的彩色阴影(例:0 4px 14px hsla(88,62%,55%,0.3)) |
| 过渡 | 300 到 500ms,庆祝时用带弹性、回弹的缓动 |
| 颜色 | 饱和的主色(饱和度大于 60%),白色或近白背景 |
| 字体 | 圆润无衬线(如 Nunito、Poppins),行高宽松(1.6 以上) |
| 间距 | 大方,区块间 24 到 32px,大区块 48 到 64px |
| 动画 | 完成时庆祝、点击回弹、里程碑撒花 |
| 空状态 | 角色插画,加鼓励文案,加单个行动按钮 |
视觉特征:较低饱和度、更多留白、该密的地方数据密集、有信任信号(客户 logo、合规徽章、案例研究)、内容服务多方角色。
来自 B2B 研究(NNGroup,尼尔森·诺曼集团,知名用户体验研究机构)的几个做法:
Otter.ai 的引导流程(B2B SaaS 范例):
B2B 企业风的"长相",同一家 Steve's Repair,换成"接企业批量维修"的后台风:
给 B2B 企业风的"品味参数":
| 圆角 | 卡片 6 到 8px;按钮 6px;输入框 4px |
|---|---|
| 阴影 | 中性、克制(0 1px 3px rgba(0,0,0,0.08)) |
| 过渡 | 200 到 300ms 标准缓动,不要回弹 |
| 颜色 | 降饱和的主色(30 到 50%)、丰富的灰阶、只用一个强调色 |
| 字体 | 专业无衬线(Inter、SF Pro、Geist),行高偏紧(1.4 到 1.5) |
| 间距 | 高效,卡片间 16 到 24px,大区块 32 到 48px |
| 动画 | 极少,骨架屏、平滑出现,不要庆祝特效 |
| 空状态 | 干净插画,加明确下一步按钮,加帮助链接 |
| 信任信号 | 客户 logo、合规徽章、"X 家公司在用"的社会认同 |
| 信号 | 偏向 |
|---|---|
| "教育产品""游戏化""C 端""消费类 App""移动优先" | B2C 活泼风 |
| "SaaS""企业""后台""dashboard / 仪表盘""管理面板" | B2B 专业风 |
| "落地页 / landing page""营销页""转化" | 看情况:B2C 落地页走情绪,B2B 落地页走信任 |
| "引导流程 / onboarding" | 都要快,但 B2C 走对话式,B2B 走清单式 |
| "定价页 / pricing" | B2C 走简单分档,B2B 走对比表 + 计算器 |
每个产品都有一份"动效预算":多少动效是合适的,超了就变干扰。这取决于产品语气和用户使用的频率。
| 产品类型 | 动效预算 | 例子 |
|---|---|---|
| 消费类 App(多邻国) | 高:庆祝、取悦、引导 | 完成时回弹、撒花、角色反应 |
| SaaS 仪表盘(Otter) | 中:平滑、有目的 | 骨架屏、平滑出现、标签切换 |
| 数据密集工具(分析类) | 低:只为功能服务 | 标签瞬间切换、最少的悬停效果 |
| 创作工具(Figma) | 中高:跟手、流畅 | 拖拽反馈、画布缩放、协作光标 |
来自 Google Material Design 3(谷歌的设计规范)的缓动配对:
| 缓动类型 | 时长 | 用于 |
|---|---|---|
| 强调(Emphasized) | 500ms | 重大过渡(页面到页面、弹窗打开) |
| 强调-减速 | 400ms | 元素进入屏幕 |
| 强调-加速 | 200ms | 元素离开屏幕 |
| 标准(Standard) | 300ms | 最常见的过渡 |
| 标准-减速 | 250ms | 普通元素进入 |
| 标准-加速 | 200ms | 普通元素退出 |
几条原则:
把鼠标移到下面两个按钮上,亲手感受"300ms 平滑"和"快进慢出回弹"的差别:
常用动画的 CSS(讲给 Agent 时可以直接抄这些值):
/* 悬停/聚焦的标准过渡 */
transition: all 300ms cubic-bezier(0.2, 0, 0, 1);
/* 重大过渡用"强调" */
transition: all 500ms cubic-bezier(0.2, 0, 0, 1);
/* 快速退出 */
transition: all 200ms cubic-bezier(0.3, 0, 1, 1);
/* 弹性回弹(只在 B2C 活泼风用) */
transition: transform 500ms cubic-bezier(0.34, 1.56, 0.64, 1);
/* 骨架屏脉冲 */
@keyframes pulse { 0%,100%{opacity:.4} 50%{opacity:.8} }
animation: pulse 1.5s ease-in-out infinite;
/* 列表错位进入:每个子项 animation-delay: calc(var(--index) * 60ms); */
animation: fadeSlideUp 400ms cubic-bezier(0.2, 0, 0, 1) backwards;
@keyframes fadeSlideUp {
from { opacity: 0; transform: translateY(12px); }
to { opacity: 1; transform: translateY(0); }
}
从多邻国的演进看:他们把引导从 7 分钟缩到 4 分钟,却加了更多屏。这里有个反常的地方:步骤更多反而可能感觉更快,只要每一步更轻、更像对话。
任何引导流程的规则:
规则 6 的真实对照,已完成任务该有明显视觉变化:
| 方面 | B2C(多邻国) | B2B(Otter.ai) |
|---|---|---|
| 个性 | 吉祥物驱动的对话 | 干净、专业的清单 |
| 速度 | 4 分钟到第一课 | 5 分钟到第一次录音 |
| 关键激活 | 完成第一课 | 连接日历 + 第一次录音 |
| 付费墙时机 | 尝到价值之后 | 引导前和引导后都有 |
| 个性化 | Duo 对每个选择都有反应 | 按使用场景定制 GIF 演示 |
| 完成感受 | 庆祝 + 连续打卡开始 | 对勾 + 露出下一个任务 |
这张表最好用:想要什么"感觉",就照着把变量讲给 Agent。
| 变量 | 严肃/专业 | 中性/干净 | 活泼/好玩 |
|---|---|---|---|
| 圆角 | 2 到 4px | 6 到 8px | 12 到 16px、药丸形 |
| 字体 | Inter、SF Pro、系统字 | Geist、DM Sans | Nunito、Poppins、Fredoka |
| 颜色饱和度 | 20 到 40% | 40 到 60% | 60 到 90% |
| 阴影风格 | 淡淡的灰 | 标准层次 | 带色、更大扩散 |
| 图标风格 | 描边、细线 | 混合 | 实心、圆润 |
| 按钮形状 | 方正(4px) | 圆角(8px) | 药丸(999px) |
| 悬停效果 | 轻微变深 | 抬起 + 阴影 | 放大 + 回弹 |
| 加载状态 | 骨架屏 / 转圈 | 骨架屏 | 角色动画 |
| 空状态 | 极简文字 + 按钮 | 插画 + 文字 | 角色 + 幽默 + 按钮 |
| 成功反馈 | 绿色对勾 | 提示横幅(toast) | 撒花 / 庆祝 |
| 微交互 | 极少 | 有目的 | 丰富、讨喜 |
| 插画风格 | 几何、抽象 | 干净线稿 | 角色驱动、彩色 |
光"圆角加饱和度"两项就能让同一个按钮感觉天差地别(真实渲染):
下面每个配方都是一整套"成品风格",给 Agent 一个名字加这套参数,它就能稳定复现:
饱和绿 + 紫色强调,16px 圆角,Nunito 粗体,到处是吉祥物,回弹动画,连续打卡计数,渐变填充的进度条,每次完成都庆祝,社会认同("X 人正在学")。
白底配深靛蓝(#635BFF),8px 圆角,系统字栈,带语法高亮的代码块,淡淡的渐变网格背景,干净的数据表,大方留白,文档级别的内容质量,终端/API 预览组件。
近乎零饱和,衬线标题(Georgia/Lora),极少阴影,内容优先布局,悬停才显露控件,行高宽松(1.7),用细分隔线而非卡片,舒适阅读宽度(最大 680px)。
深色模式友好,紫罗兰强调色(#7C5CFC),6px 圆角,紧凑间距,键盘快捷键徽章,状态指示用彩色圆点(不是整块徽章),紧凑但易读的字,瞬时过渡(150ms),命令面板式 UI。
蓝色主导(传达信任),保守圆角(4px),显眼的合规徽章,清晰的数据层级,无障碍对比度(WCAG AAA),无任何花哨元素,正式用语,明确的确认弹窗,可见的操作审计记录。
做任何网页原型时,至少加入下面这些"微细节"里的 10 个。它们是"随手生成"会跳过、而专业作品都有的地方。你不必自己实现,可以照单点名让 Agent 加上:
| 1 | 错位进入动画:列表项/卡片逐个淡入,每个之间错开 60ms |
| 2 | 悬停抬起:卡片悬停时抬起(translateY(-2px) 加阴影加重) |
| 3 | 聚焦环样式:自定义聚焦环(2px 偏移、品牌色、50% 透明) |
| 4 | 平滑颜色过渡:所有可交互元素都有 transition: all 200ms ease |
| 5 | 骨架加载态:内容"加载"前先显示脉冲占位 |
| 6 | 淡淡的背景渐变:不是死白,而是近白渐变或细微噪点纹理 |
| 7 | 图标与文字对齐:图标和文字垂直居中对齐,不是顶部对齐 |
| 8 | 响应式字号:用 clamp(16px, 2vw, 20px) 做流式字号 |
| 9 | 滚动触发出现:元素进入视口时才动画出现(IntersectionObserver) |
| 10 | 空/零状态设计:没数据时长什么样?明确设计它 |
| 11 | 按下态:按钮按下时轻微缩小(0.98)制造触感 |
| 12 | 平滑滚动:html 上加 scroll-behavior: smooth |
| 13 | 选中颜色:自定义 ::selection 颜色匹配品牌 |
| 14 | 柔和边框:用 box-shadow: 0 0 0 1px rgba(0,0,0,0.05) 代替边框,更柔 |
| 15 | 徽章/标签设计:圆角药丸配淡色背景(不是死板的实心方块) |
| 16 | 悬停提示(tooltip):悬停 200ms 延迟后出现额外信息,从下方滑入 |
| 17 | 数字格式化:大数字加千分位逗号、货币符号、百分号 |
| 18 | 溢出省略号:长文本用 text-overflow: ellipsis,配 title 显示全文 |
| 19 | 间距节奏:所有间距/外边距都按 8px 基准网格,处处一致 |
| 20 | 深色模式就绪:所有颜色用 CSS 变量,方便一键切换 |
同一张维修单卡片,加了"悬停抬起、药丸徽章、柔和边框、千分位"几个细节后(把鼠标移上去看):
拿不准该走哪种风,就把产品一句话描述 + 目标用户发给你的 AI 老师(Agent),问:"按受众/语气/交互/复杂度四个维度,这个产品该往哪种风格靠?给我具体的圆角、饱和度、动画数值。"
abel-ux)· Abel's Design Note,综合 Refactoring UI、Laws of UX、Apple HIG、Material Design、NNGroup,及 Duolingo / Otter.ai 等案例研究。本卡为中文整理版 + 可视示例,贯穿全程可反复回看。