【Cursor进阶实战·02】告别丑陋界面!让AI当你的产品+UI专家,3步生成专业设计
无需设计师、无需学设计、无需限定技术栈!让Cursor扮演产品专家和UI专家,生成静态HTML设计稿,然后还原到任何技术栈(Web/Android/iOS)。一次设计,多端复用。
引言:程序员做UI的困境
周末准备做个Side Project,后端接口设计好了,数据库也建好了,就差界面…然后就卡住了。
传统方案都不够优雅:
- 找设计师?预算有限,沟通成本高
- 买模板?不灵活,改起来一堆问题
- 自己硬搞?配色土气,间距混乱
更要命的是,现有的AI方案也有问题:
- 上来就让你选技术栈(Next.js? Android?)
- 要求你去收集设计灵感
- 生成的代码绑定框架,换平台得重写
有一个更优雅的方案:
✅ 不需要懂设计,AI当你的产品+UI专家
✅ 不限定技术栈,先做设计后选技术
✅ 生成静态HTML设计稿,可视化评审
✅ 定稿后还原到任何平台(Web/Android/iOS)
核心方法:AI驱动的设计优先工作流
方法论对比

为什么用静态HTML作为设计稿?
| 维度 | 静态HTML | 直接生成框架代码 |
|---|---|---|
| 技术栈 | 无关,任何平台都能参考 | 绑定特定框架 |
| 预览速度 | 秒开,浏览器直接看 | 需要安装依赖、编译 |
| 修改成本 | 低,只关注视觉 | 高,涉及框架细节 |
| 复用性 | 一次设计多端用 | 换平台重写 |
第一步:描述需求(2分钟)
用自然语言描述你要什么,不需要写PRD。
案例:项目管理仪表板
## 功能需求
- 项目列表卡片(名称、描述、进度、团队成员)
- 顶部统计数据(总数、进行中、已完成)
- 侧边活动时间线
- "新建项目"按钮
## 目标用户
技术团队的项目经理和开发者
## 期望感觉
专业、现代、简洁、深色主题,类似Linear、Notion
第二步:让AI当产品+UI专家(5分钟)
核心技巧:让AI扮演专家角色,自己去参考优秀产品。
完整Prompt模板
你现在同时扮演两个角色:
1. 资深产品经理:理解需求,参考同类产品最佳实践
2. 资深UI设计师:精通现代设计,擅长B2B/SaaS产品
## 我的需求
[粘贴上面的需求描述]
## 你的任务
### 阶段1:产品设计
1. 参考Linear、Notion等优秀产品
2. 给出3个布局方案并推荐最佳
### 阶段2:UI设计
设计完整视觉方案:
- 配色方案(主色、背景、文本)
- 字体系统(大小和权重)
- 间距系统(容器、卡片、元素)
- 圆角和阴影
- 交互状态(hover、active)
### 阶段3:生成设计稿
用纯HTML+内联CSS生成完整静态页面:
- 现代CSS(Flexbox/Grid)
- 所有样式内联
- 包含交互状态
- 浏览器直接打开可用
## 输出格式
1. 产品方案(3个布局 + 推荐理由)
2. UI设计系统(详细参数)
3. 完整HTML代码

AI响应示例(实际生成)
产品方案:
推荐方案:三栏布局(主内容区 + 侧边栏)
- 顶部:统计卡片(总数、进行中、已完成、团队成员)
- 主内容区:项目卡片网格(自适应列数)
- 右侧边栏:活动时间线(固定320px宽度)
- 优势:信息层级清晰,符合Linear/Notion布局习惯,桌面端体验最佳
UI设计系统:
配色(深色主题,参考Linear):
- 背景层级:#0d0d0d(主背景)/ #161616(卡片)/ #1f1f1f(悬浮)/ #262626(提升)
- 文本层级:#ffffff(主文本)/ #a6a6a6(次级)/ #737373(三级)/ #525252(禁用)
- 强调色:#5e6ad2(Linear蓝紫,主色)/ #6b77e0(悬浮)/ #4f5bc4(激活)
- 语义色:#10b981(成功)/ #f59e0b(警告)/ #ef4444(错误)
字体系统:
- 大小:11px/13px/15px/17px/20px/24px/30px(7级)
- 权重:400(常规)/ 500(中等)/ 600(半粗)/ 700(粗体)
间距系统(8px基准):
- 4px/8px/12px/16px/20px/24px/32px/40px/48px/64px(11级)
圆角:4px(小)/ 6px(中)/ 8px(大)/ 12px(超大)
阴影:4级深度(sm/md/lg/xl)
过渡:150ms/200ms/300ms(fast/base/slow)
HTML代码(实际结构):
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<style>
:root {
/* 配色方案 */
--bg-primary: #0d0d0d;
--bg-secondary: #161616;
--bg-tertiary: #1f1f1f;
--text-primary: #ffffff;
--text-secondary: #a6a6a6;
--accent-primary: #5e6ad2;
/* 字体系统 */
--text-xs: 11px;
--text-sm: 13px;
--text-base: 15px;
--text-lg: 17px;
--text-xl: 20px;
--text-2xl: 24px;
/* 间距系统 */
--space-4: 16px;
--space-5: 20px;
--space-6: 24px;
--space-8: 32px;
/* 圆角 */
--radius-lg: 8px;
/* 过渡 */
--transition-base: 200ms cubic-bezier(0.4, 0, 0.2, 1);
}
body {
background: var(--bg-primary);
color: var(--text-primary);
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}
.app-container {
display: flex;
min-height: 100vh;
}
.main-content {
flex: 1;
padding: var(--space-8);
}
.sidebar {
width: 320px;
background: var(--bg-secondary);
padding: var(--space-6);
}
.project-card {
background: var(--bg-secondary);
border: 1px solid #262626;
border-radius: var(--radius-lg);
padding: var(--space-5);
transition: all var(--transition-base);
}
.project-card:hover {
border-color: #404040;
background: var(--bg-tertiary);
transform: translateY(-2px);
box-shadow: 0 10px 15px rgba(0, 0, 0, 0.5);
}
</style>
</head>
<body>
<div class="app-container">
<div class="main-content">
<!-- 顶部统计卡片 -->
<!-- 项目网格 -->
<div class="project-card">...</div>
</div>
<div class="sidebar">
<!-- 活动时间线 -->
</div>
</div>
</body>
</html>

第三步:评审和迭代(3分钟)
用自然语言描述问题,AI自动调整。
常见调整场景
场景1:卡片间距太紧凑
"项目卡片之间只有16px间距,感觉有点挤。
增加到20px,让内容更透气。"
场景2:hover效果不够明显
"鼠标移到卡片上,变化太subtle了,
上移幅度加大到4px,阴影再深一点。"
场景3:统计数字不够醒目
"统计卡片里的数字24px还不够大,
改成28px-30px,让关键数据更突出。"
关键技巧:对比式调整
不说具体数值,用自然语言:
"背景太暗" → AI调亮
"间距太紧" → AI增加
"圆角太大" → AI减小
"字体太小" → AI放大

第四步:还原到具体技术栈
设计稿定稿后,还原到任何技术栈。一套设计,多端复用!
Web: Next.js + Shadcn/UI
我有完整的静态HTML设计稿(见附件)。
请还原到Next.js + Shadcn/UI + TailwindCSS:
1. 严格遵循设计稿的配色、字体、间距、圆角、交互
2. 使用Shadcn/UI的Card、Badge、Progress组件
3. 用TailwindCSS实现样式
4. 生成完整代码(page.tsx + 组件)
生成代码示例(精简):
// app/dashboard/page.tsx
import { Card, CardHeader, CardContent } from '@/components/ui/card'
import { Button } from '@/components/ui/button'
export default function DashboardPage() {
return (
<div className="min-h-screen bg-[#0d0d0d]">
<div className="max-w-[1920px] mx-auto px-8 py-8">
{/* 顶部统计卡片 */}
<div className="grid grid-cols-4 gap-4 mb-8">
{/* 统计卡片 */}
</div>
<div className="flex justify-between mb-6">
<h1 className="text-xl font-semibold">项目列表</h1>
<Button className="bg-[#5e6ad2] hover:bg-[#6b77e0]">+ 新建项目</Button>
</div>
<div className="flex gap-8">
<div className="flex-1">
<div className="grid grid-cols-[repeat(auto-fill,minmax(320px,1fr))] gap-4">
<Card className="bg-[#161616] border-[#262626] hover:bg-[#1f1f1f] hover:border-[#404040] hover:-translate-y-0.5 transition-all">
{/* 项目卡片 */}
</Card>
</div>
</div>
<div className="w-[320px] bg-[#161616] border-l border-[#262626] p-6">
{/* 侧边栏 - 活动时间线 */}
</div>
</div>
</div>
</div>
)
}
Android: Jetpack Compose
将同一设计稿还原到Android Jetpack Compose:
1. 配色转换为Color定义
2. 间距转换为dp
3. 使用Material 3组件
4. 生成完整Kotlin代码
生成代码示例(精简):
// ui/theme/Color.kt
val DarkBackground = Color(0xFF0D0D0D)
val CardBackground = Color(0xFF161616)
val PrimaryBlue = Color(0xFF5E6AD2)
// DashboardScreen.kt
@Composable
fun DashboardScreen() {
Scaffold(containerColor = DarkBackground) {
Column(
modifier = Modifier
.padding(32.dp)
.fillMaxSize()
) {
// Header
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceBetween
) {
Text("项目列表", fontSize = 20.sp, fontWeight = FontWeight.SemiBold)
Button(onClick = {}, colors = ButtonDefaults.buttonColors(
containerColor = PrimaryBlue
)) {
Text("+ 新建项目")
}
}
Spacer(modifier = Modifier.height(48.dp))
// Projects Grid
LazyVerticalGrid(
columns = GridCells.Adaptive(320.dp),
horizontalArrangement = Arrangement.spacedBy(24.dp)
) {
items(projects) { project ->
ProjectCard(project)
}
}
}
}
}
**核心价值**:静态HTML定稿后,还原到任何技术栈只需5分钟!所有视觉参数已确定,AI只需"翻译"成不同语言。
进阶技巧
1. 参考特定产品风格
✅ 具体描述:
"参考Linear的配色(低饱和度深色)、
间距系统(宽松留白)、
微交互(subtle hover效果)"
✅ 更好的描述:
"打开Linear项目列表页,注意:
- 卡片和背景对比subtle但层次清晰
- hover时卡片轻微上移,阴影加深
- 文本有3层级:标题/正文/辅助,对比明显
请复刻这种设计感觉"
2. 建立设计系统库
第一次生成满意的设计后,提取设计系统:
# design-system.md
配色:主色#5e6ad2 / 背景#0d0d0d / 卡片#161616 / 悬浮#1f1f1f
文本:主文本#ffffff / 次级#a6a6a6 / 三级#737373
间距:页面32px / 卡片20px / 元素16px / 小间距8px
圆角:大卡片8px / 按钮6px / 标签4px
字体:H1 20px/600 / 正文15px/400 / 小文本13px/400
下次直接引用:
根据我的设计系统(见design-system.md),
设计用户设置页面的静态HTML。
保持配色、间距、圆角完全一致。
3. 组件库思维
从设计稿中提取可复用组件的独立HTML:
- ProjectCard(项目卡片)
- StatusBadge(状态标签)
- ProgressBar(进度条)
- AvatarGroup(头像组)
每个组件独立文件,包含CSS,有多个变体。
避坑指南
错误1:设计稿太复杂
❌ 第一次就设计复杂页面,几千行代码难调整
✅ 先做核心页面,满意后再拆分组件
错误2:过早绑定技术栈
❌ 一开始就说"用React生成",需求变了前功尽弃
✅ 先用静态HTML做设计,定稿后再还原
错误3:忽略交互状态
❌ 只有默认状态,没有hover/active/disabled
✅ 设计阶段就要求所有交互状态
错误4:没有保存设计决策
❌ 做完就扔,下次又从头开始
✅ 保存设计稿+设计系统+组件库,持续复用
常见问题
Q1:静态HTML能有多高保真?
A:非常高!包含所有视觉细节、交互状态、响应式布局、动画效果。唯一缺少业务逻辑。
Q2:如何确保还原一致?
A:在Prompt中明确:“严格遵循设计稿的每个细节,精确到颜色值、间距、圆角。如果框架没有精确值,用自定义保证视觉一致。”
Q3:PM要改怎么办?
A:静态HTML改动成本极低(1分钟),而已写好的框架代码可能要10-20分钟。在设计稿阶段多迭代,定稿后再写代码。
Q4:AI设计真的好看吗?
A:取决于Prompt质量。提供参考对象(“参考Linear的配色、Notion的布局”),AI会"学习"优秀产品的设计。
总结
核心方法
✅ 设计与技术分离 - 先做设计,再选技术
✅ AI驱动设计 - AI当产品+UI双重专家
✅ 静态HTML作桥梁 - 可视化、技术栈无关
✅ 自然语言迭代 - 不需要懂代码
✅ 一次设计多端复用 - Web/Android/iOS通用
立即实践
- 想一个小项目(待办、记账、笔记)
- 用本文Prompt让AI生成静态设计稿
- 浏览器预览,迭代2-3次
- 还原到你的技术栈
建立资产库
my-design-system/
├── designs/ # 静态设计稿
├── design-system.md # 设计系统
├── components/ # 可复用组件
└── prompts/ # Prompt模板
AI不是取代设计师,而是让每个开发者都能做出专业UI。
系列文章
感谢阅读!如果这篇文章对你有帮助,欢迎点赞、收藏、分享。我们下期见!👋
有问题欢迎在评论区讨论,我会尽量回复每一条评论。
🎉 感谢关注,让我们一起享受技术带来的精彩!
我做了一个个人主页,能找到所有我提供给你的资源: 个人主页
更多推荐

所有评论(0)