对标目标:Gemini、ChatGPT、Manus 极简洁、极精美、高效空间利用、协调主题色
- 去除视觉噪音: 仅保留必要元素,每个组件有明确目的
- 呼吸空间: 善用留白,不强塞内容
- 渐进展示: 默认简洁,按需展开细节
- 精致微交互: 动画柔和流畅 (0.2-0.4s easing)
- 高品质渐变: 微妙的渐变背景,不过度使用
- 细腻阴影层次: 3级阴影系统 (sm/md/lg)
- 圆角一致性: 卡片 8-12px, 按钮 6-8px,小组件 4-6px
- 组件压缩技术:
- Collapse/Expand 面板
- Tabs/Segmented Control 切换视图
- Tooltip/Popover 悬浮显示细节
- Modal/Drawer 临时层级
- 垂直节奏: 8px grid system (4/8/12/16/24/32)
- 响应式密度: 根据屏幕宽度动态调整信息密度
- 主色调: Teal/Cyan (青绿色系) - 平静、智能、科技
- 辅助色: 青蓝色系 - 信息提示、交互反馈
- 功能色:
- Success: #52c41a (绿色)
- Warning: #fa8c16 (橙色)
- Error: #ff4d4f (红色)
- Info: #00bac4 (青蓝)
// 青绿色系 (Teal) - 主品牌色
$primary-color-50: #f0f7f7 // 背景 - 极浅
$primary-color-100: #d8ebea // 背景 - 浅
$primary-color-200: #b8ddd9 // 边框 - hover
$primary-color-300: #98cfc8 // 边框 - default
$primary-color-500: #6b9a98 // 主色调 - 核心
$primary-color-700: #4a6d6c // 深色 - 文字
$primary-color-900: #2a3f3f // 最深 - 强调使用场景:
- 50-100: 页面背景、卡片背景、侧边栏背景
- 200-300: 边框、分割线、禁用状态
- 500: 主按钮、链接、图标、活动状态
- 700-900: 标题文字、重要文本
// 青蓝色系 (Cyan-Blue) - 辅助色/强调色
$secondary-color-50: #e0fafa // 信息提示背景
$secondary-color-100: #99e6e6 // 浅青蓝
$secondary-color-300: #33cfd2 // 适中青蓝 - 图标/徽章
$secondary-color-500: #009aa7 // 核心辅助色
$secondary-color-700: #00606b // 深青蓝 - 重要信息使用场景:
- 信息徽章 (badges)
- 辅助按钮
- 强调区域边框
- 通知/提示组件
设计理念: 柔和、果冻质感、低饱和度,适用于状态指示、标签、卡片
$jelly-pink-lightest: #fffafb
$jelly-pink-light: #ffebee
$jelly-pink: #fce4ec
$jelly-pink-deep: #f3bddb$jelly-blue-light: #e3f2fd
$jelly-blue: #bbdefb
$jelly-blue-deep: #90caf9$jelly-green-light: #e8f5e9
$jelly-green: #c8e6c9
$jelly-green-deep: #a5d6a7$jelly-yellow-lightest: #fbf9f2
$jelly-yellow-light: #fff8e1
$jelly-yellow: #ffeeba
$jelly-yellow-deep: #ffe082$jelly-red-lightest: #fff0f2
$jelly-red-light: #ffccd5
$jelly-red: #ff9eaf
$jelly-red-deep: #ff6b8e// 深色文本层次
$text-primary: rgba(51, 65, 85, 0.9) // 主标题
$text-secondary: rgba(51, 65, 85, 0.75) // 副文本
$text-tertiary: rgba(51, 65, 85, 0.5) // 辅助信息
$text-quaternary: rgba(51, 65, 85, 0.3) // 占位符/禁用使用规则:
- Primary: 页面标题、重要内容
- Secondary: 正文、描述
- Tertiary: 提示文字、时间戳
- Quaternary: 占位符、禁用状态
font-family: -apple-system, BlinkMacSystemFont,
"Segoe UI Variable Display", "Segoe UI",
Helvetica, Arial, sans-serif,
"Apple Color Emoji", "Segoe UI Emoji";优先级: 系统字体 > Segoe UI > Helvetica > Arial
| 用途 | 字号 | 行高 | 字重 |
|---|---|---|---|
| 超大标题 | 28px | 1.3 | 600-700 |
| 大标题 | 20-24px | 1.4 | 600 |
| 小标题 | 16-18px | 1.4 | 600 |
| 正文 | 14px | 1.5 | 400-500 |
| 辅助文字 | 12-13px | 1.4 | 400-500 |
| 小字 | 10-11px | 1.3 | 400-500 |
- 标题与正文对比: 标题字号至少比正文大 4px
- 行高: 正文 1.5-1.6,标题 1.3-1.4
- 字间距: 标题略紧 (-0.01em),正文正常
- 段落间距: 12-16px
$space-xs: 4px // 微小间距
$space-sm: 8px // 小间距
$space-md: 12px // 中间距
$space-lg: 16px // 大间距
$space-xl: 24px // 超大间距
$space-2xl: 32px // 巨大间距| 组件类型 | Padding |
|---|---|
| 卡片 (Card) | 16px (lg) |
| 按钮 (Button) | 8px 16px |
| 输入框 (Input) | 8px 12px |
| Modal | 24px (xl) |
| 侧边栏 | 16-18px |
| 列表项 | 12px 16px |
- 垂直节奏: 使用 8px grid
- 组件间距: 12-16px (md-lg)
- 章节间距: 24-32px (xl-2xl)
- 紧凑模式: 减少 50% 间距
background: linear-gradient(135deg, #6b9a98, #50c8b7);
padding: 8px 16px;
border-radius: 6-8px;
box-shadow: 0 2px 8px rgba(107, 154, 152, 0.2);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
&:hover {
transform: translateY(-1px);
box-shadow: 0 4px 12px rgba(107, 154, 152, 0.3);
}background: transparent;
border: 1px solid $primary-color-300;
color: $primary-color-700;
&:hover {
background: $primary-color-50;
border-color: $primary-color-500;
}background: linear-gradient(135deg,
rgba(255,255,255,0.95),
rgba(248,250,252,0.95));
border-radius: 12px;
border: 1px solid rgba(0,0,0,0.05);
padding: 16px;
box-shadow: 0 2px 8px rgba(0,0,0,0.08);
&:hover {
box-shadow: 0 4px 20px rgba(0,0,0,0.1);
transform: translateY(-2px);
}border: 1px solid $primary-color-200;
border-radius: 6px;
padding: 8px 12px;
font-size: 14px;
transition: all 0.3s;
&:focus {
border-color: $primary-color-500;
box-shadow: 0 0 0 3px rgba(107, 154, 152, 0.1);
outline: none;
}// 状态徽章
padding: 2px 8px;
border-radius: 12px; // 全圆角
font-size: 11px;
font-weight: 500;
// Todo状态
background: $jelly-yellow-light;
color: #ad6800;
// Running状态
background: $jelly-green;
color: #237804;
animation: pulse 2s infinite;
// Completed状态
background: $jelly-green-deep;
color: white;// 侧边栏导航项
padding: 8px 12px;
border-radius: 16px; // 较大圆角,柔和
transition: all 0.3s;
// 活动状态
background: $primary-color-100;
color: $primary-color-700;
border-left: 3px solid $primary-color-500;
// Hover状态
background: rgba($primary-color-900, 0.08);$ease-in-out: cubic-bezier(0.4, 0, 0.2, 1); // 默认
$ease-out: cubic-bezier(0, 0, 0.2, 1); // 快入慢出
$ease-in: cubic-bezier(0.4, 0, 1, 1); // 慢入快出
$ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55); // 弹性| 动画类型 | 时长 |
|---|---|
| 微交互 (按钮) | 0.2s |
| 组件过渡 | 0.3s |
| 页面切换 | 0.4s |
| 复杂动画 | 0.5-0.8s |
.fade-enter-active, .fade-leave-active {
transition: opacity 0.3s $ease-in-out;
}
.fade-enter-from, .fade-leave-to {
opacity: 0;
}@keyframes slideUp {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}@keyframes pulse {
0%, 100% {
box-shadow: 0 0 0 0 rgba(107, 154, 152, 0.7);
}
50% {
box-shadow: 0 0 0 10px rgba(107, 154, 152, 0);
}
}$breakpoint-xs: 480px; // 手机
$breakpoint-sm: 768px; // 平板
$breakpoint-md: 1024px; // 小屏笔记本
$breakpoint-lg: 1280px; // 桌面
$breakpoint-xl: 1920px; // 大屏- < 768px: 单列,侧边栏收起,全屏模态
- 768-1024px: 双列,侧边栏可切换
- > 1024px: 多列,侧边栏常驻
// 移动端字号略小
@media (max-width: $breakpoint-sm) {
html { font-size: 14px; }
}
// 桌面端标准
@media (min-width: $breakpoint-md) {
html { font-size: 16px; }
}| 交互 | 反馈方式 |
|---|---|
| 点击 | 0.2s 缩放 (scale: 0.98) |
| 悬停 | 提升 2px, 增强阴影 |
| 加载 | 骨架屏/加载动画 |
| 成功 | ✓ 图标 + 绿色提示 |
| 错误 | ⚠ 图标 + 红色提示 + 震动 |
<a-collapse ghost :bordered="false">
<a-collapse-panel header="详细信息">
<!-- 详情内容 -->
</a-collapse-panel>
</a-collapse><a-tooltip placement="top">
<template #title>详细说明</template>
<InfoCircleOutlined/>
</a-tooltip><a-drawer
v-model:open="visible"
width="400"
placement="right">
<!-- 侧边详情 -->
</a-drawer>// 自定义滚动条
@mixin pretty-scrollbar {
scrollbar-width: thin;
scrollbar-color: $primary-color-200 transparent;
&::-webkit-scrollbar {
width: 8px;
height: 8px;
}
&::-webkit-scrollbar-thumb {
background: rgba($primary-color-200, 0.8);
border-radius: 6px;
}
}- ✅ 极简输入框: 中央大输入框,无干扰
- ✅ 渐变背景: 微妙的背景渐变
- ✅ 卡片式消息: 圆角卡片,清晰层次
- ✅ 动画流畅: 消息逐字显示,过渡柔和
- ✅ 侧边栏历史: 紧凑的对话列表
- ✅ 简洁导航: 左侧极简图标导航
- ✅ Markdown 渲染: 代码高亮,表格支持
- ✅ 暗色模式: 护眼的深色主题
- ✅ 空间高效: 多面板布局,信息密度高
- ✅ 图标系统: 统一的图标语言
- ✅ 状态指示: 清晰的任务状态可视化
- ✅ 快捷操作: 悬浮操作按钮
- ✨ 青花瓷过渡动画: 独特的文化标识
- ✨ Plan 可视化: 直观的计划展示
- ✨ Jelly 色彩系统: 温和友好的色调
- ✨ 多模式切换: Geek/Multimodal 模式
- 使用主题色系 (Primary/Secondary)
- 遵循间距系统 (8px grid)
- 圆角统一 (卡片 12px, 按钮 6-8px)
- 阴影层次合理 (sm/md/lg)
- 文字层次清晰 (Primary/Secondary/Tertiary)
- Hover 状态有反馈
- 点击有视觉反馈 (0.2s)
- 加载状态有指示
- 错误提示清晰
- 过渡动画流畅 (0.3s)
- 能否折叠/展开?
- 能否用 Tooltip 替代?
- 能否用 Tab 切换?
- 能否用 Drawer 隐藏?
- 响应式适配?
- 颜色对比度 > 4.5:1
- 可键盘导航
- 有明确的焦点指示
- 支持屏幕阅读器
- P0 - 核心体验: 输入框、消息列表、导航
- P1 - 关键功能: 按钮、卡片、表单
- P2 - 增强体验: 动画、过渡、微交互
- CSS 预处理器: SCSS (已使用)
- 动画库: GSAP (已集成,流畅强大)
- 组件库: Ant Design Vue (已集成,需定制主题)
- 图标: Ant Design Icons (统一性)
- Phase 1: 统一主题色,调整间距
- Phase 2: 优化关键组件 (按钮、卡片、输入框)
- Phase 3: 添加动画过渡
- Phase 4: 空间优化 (Collapse, Drawer)
- Phase 5: 暗色模式支持
- 过度渐变: 避免使用超过 2 个色阶的渐变
- 色彩混乱: 一个界面不超过 3 种主色
- 阴影过重: box-shadow 不超过 0.15 透明度
- 圆角不一致: 同类组件圆角必须一致
- 过慢动画: 动画时长不超过 0.5s
- 突兀出现: 所有元素都应有入场动画
- 无反馈: 点击、悬停必须有反馈
- 加载黑洞: 超过 1s 的操作必须显示加载状态
- 信息过载: 一屏不超过 3 个关键信息区
- 间距不均: 必须遵循 8px grid
- 挤压内容: 留白不足 8px 视为过密
// 卡片基础样式
@mixin plan-card-base {
background: linear-gradient(135deg,
rgba(255,255,255,0.95),
rgba(248,250,252,0.95));
border-radius: 12px;
border: 1px solid rgba(0,0,0,0.05);
padding: $space-lg;
transition: all 0.3s ease;
}
// 漂亮的滚动条
@mixin pretty-scrollbar {
scrollbar-width: thin;
scrollbar-color: $primary-color-200 transparent;
&::-webkit-scrollbar { width: 8px; height: 8px; }
&::-webkit-scrollbar-thumb {
background: rgba($primary-color-200, 0.8);
border-radius: 6px;
}
}
// 状态样式
@mixin plan-status-style($color, $bg-color) {
border-left: 4px solid $color;
background: linear-gradient(135deg,
$bg-color 0%,
rgba($bg-color, 0.5) 100%);
}文档版本: v1.0
最后更新: 2025-11-22
维护者: VOLO AI Team