- 添加React + Vite前端项目 (client) - 添加Node.js + Express后端项目 (server) - 实现JWT认证系统 (注册/登录/刷新Token) - 添加Prisma ORM配置 (SQLite/PostgreSQL) - 配置Tailwind CSS和Mantine组件库 Co-Authored-By: Claude (MiniMax-M2.1) <noreply@anthropic.com>
41 KiB
掐日子(qia)UI 设计规范
版本:v1.0.0 更新日期:2026-01-29 设计风格:苹果公司风格,浅色系
1 设计原则
1.1 整体设计理念
掐日子的设计遵循"简洁、高效、温暖"三大核心理念,以苹果Human Interface Guidelines为设计准则,打造轻便易用的日期管理工具。
简洁性原则:去除一切不必要的视觉元素,让用户专注于核心内容。界面采用大量留白,通过清晰的层级结构引导用户视线,避免信息过载带来的认知负担。每一个设计决策都经过深思熟虑,确保每个元素都有其存在的必要性。
高效性原则:以用户任务为中心,优化操作流程,减少用户点击次数。AI智能解析功能让添加纪念日和提醒变得像发消息一样简单,自然语言交互降低了学习成本。快速响应和流畅的动效设计提升了整体使用效率。
温暖性原则:通过精心设计的细节传递产品的温度。倒计时显示让用户感受到时间的珍贵,贴心的到期提醒帮助用户不再错过重要日期。整体视觉风格采用温暖的浅色调,营造舒适愉悦的使用氛围。
1.2 视觉风格定义
掐日子采用苹果公司风格的浅色系设计语言,具体特征如下:
| 设计属性 | 规范定义 |
|---|---|
| 设计风格 | 苹果扁平化设计,轻拟物元素 |
| 主色调 | 系统蓝品牌色 #007AFF |
| 背景色 | 浅灰白色 #FFFFFF / #F5F5F7 |
| 圆角风格 | 中等圆角,8px-16px |
| 阴影效果 | 柔和投影,轻量级层级阴影 |
| 字体风格 | 系统字体,无衬线清晰可读 |
| 图标风格 | 线性图标,圆角处理 |
2 颜色系统
2.1 主色调(品牌色)
品牌色是产品视觉识别的核心,应用于主要操作按钮、链接、选中状态等关键元素。
| 颜色名称 | 色值 | CSS变量 | 使用场景 |
|---|---|---|---|
| 品牌主色 | #007AFF |
--color-primary |
主要按钮背景、链接、选中状态、图标填充 |
| 品牌浅色 | #EAF3FF |
--color-primary-light |
背景色、悬停背景、选中框背景 |
| 品牌深色 | #0056CC |
--color-primary-dark |
按下状态、disabled状态 |
2.2 辅助色
辅助色用于补充品牌色,在特定场景下传达特定含义。
| 颜色名称 | 色值 | CSS变量 | 使用场景 |
|---|---|---|---|
| 紫色 | #AF52DE |
--color-purple |
AI功能标识、特殊纪念日 |
| 绿色 | #34C759 |
--color-green |
完成状态、成功提示 |
| 橙色 | #FF9500 |
--color-orange |
警告提示、待处理提醒 |
| 红色 | #FF3B30 |
--color-red |
错误状态、删除操作、已错过提醒 |
| 黄色 | #FFCC00 |
--color-yellow |
提醒标识、重要日期高亮 |
2.3 中性色
中性色用于文字、背景、边框等基础UI元素,构建界面的层次结构。
| 颜色名称 | 色值 | CSS变量 | 使用场景 |
|---|---|---|---|
| 文字主色 | #1D1D1F |
--color-text-primary |
标题、重要内容 |
| 文字次色 | #48484A |
--color-text-secondary |
正文内容 |
| 文字三级 | #86868B |
--color-text-tertiary |
辅助说明、时间显示 |
| 文字占位 | #C7C7CC |
--color-text-placeholder |
输入框占位符、空状态 |
| 背景白色 | #FFFFFF |
--color-bg-white |
卡片、弹窗背景 |
| 背景浅灰 | #F5F5F7 |
--color-bg-light |
页面背景、分组标题背景 |
| 背景更深灰 | #E5E5EA |
--color-bg-darker |
分割线、边框 |
| 边框颜色 | #C6C6C8 |
--color-border |
输入框边框、分隔线 |
2.4 功能色
功能色用于传达操作结果的反馈信息。
| 功能 | 色值 | CSS变量 | 应用示例 |
|---|---|---|---|
| 成功 | #34C759 |
--color-success |
完成checkmark、创建成功提示 |
| 警告 | #FF9500 |
--color-warning |
即将过期提醒、需要注意 |
| 错误 | #FF3B30 |
--color-error |
删除确认、表单验证失败 |
| 信息 | #007AFF |
--color-info |
普通提示、新功能引导 |
2.5 语义色
语义色用于区分不同类型的内容,增强信息的可识别性。
| 内容类型 | 色值 | CSS变量 | 使用场景 |
|---|---|---|---|
| 纪念日色条 | #AF52DE |
--color-anniversary |
纪念日卡片左侧色条 |
| 提醒色条 | #007AFF |
--color-reminder |
提醒卡片左侧色条 |
| 便签色条 | #34C759 |
--color-note |
便签区域标识 |
| AI对话色 | #5856D6 |
--color-ai |
AI消息气泡、对话框 |
| 农历标识 | #FF9500 |
--color-lunar |
农历日期文字颜色 |
| 法定节假日 | #FF3B30 |
--color-holiday |
节假日标签 |
2.6 颜色令牌汇总
:root {
/* 品牌色 */
--color-primary: #007AFF;
--color-primary-light: #EAF3FF;
--color-primary-dark: #0056CC;
/* 辅助色 */
--color-purple: #AF52DE;
--color-green: #34C759;
--color-orange: #FF9500;
--color-red: #FF3B30;
--color-yellow: #FFCC00;
/* 中性色 */
--color-text-primary: #1D1D1F;
--color-text-secondary: #48484A;
--color-text-tertiary: #86868B;
--color-text-placeholder: #C7C7CC;
--color-bg-white: #FFFFFF;
--color-bg-light: #F5F5F7;
--color-bg-darker: #E5E5EA;
--color-border: #C6C6C8;
/* 功能色 */
--color-success: #34C759;
--color-warning: #FF9500;
--color-error: #FF3B30;
--color-info: #007AFF;
/* 语义色 */
--color-anniversary: #AF52DE;
--color-reminder: #007AFF;
--color-note: #34C759;
--color-ai: #5856D6;
--color-lunar: #FF9500;
--color-holiday: #FF3B30;
}
3 字体系统
3.1 字体家族
采用系统默认字体,确保在不同平台上的最佳可读性和一致性。
| 字体类型 | 字体名称 | CSS声明 | 说明 |
|---|---|---|---|
| 主字体 | -apple-system | font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, sans-serif |
iOS/macOS系统字体 |
| 中文字体 | PingFang SC | 'PingFang SC', 'Microsoft YaHei', sans-serif |
苹方字体(Mac)/微软雅黑(Windows) |
| 等宽字体 | SF Mono | font-family: 'SF Mono', Monaco, Menlo, monospace |
用于代码展示 |
3.2 字号层级
建立清晰的字号层级体系,确保信息层次的视觉区分。
| 字号名称 | 字号大小 | 行高 | 字重 | CSS变量 | 使用场景 |
|---|---|---|---|---|---|
| 超大标题 | 34px | 41px | 700 | --font-size-xxl |
宣传页主标题 |
| 大标题 | 28px | 34px | 700 | --font-size-xl |
页面主标题 |
| 中标题 | 22px | 28px | 600 | --font-size-lg |
区域标题、卡片标题 |
| 小标题 | 18px | 24px | 600 | --font-size-md |
分组标题、重要内容 |
| 正文字 | 16px | 24px | 400 | --font-size-base |
正文内容、输入文字 |
| 小正文 | 14px | 20px | 400 | --font-size-sm |
次要说明、卡片内容 |
| 辅助文字 | 12px | 16px | 400 | --font-size-xs |
时间标签、占位符 |
| 最小文字 | 10px | 14px | 400 | --font-size-xxs |
徽章标签、数量标识 |
3.3 字重规范
| 字重 | CSS值 | 使用场景 |
|---|---|---|
| 700 (Bold) | 700 / bold |
大标题、区域标题、数字强调 |
| 600 (Semibold) | 600 |
小标题、卡片标题、需要强调的文字 |
| 400 (Regular) | 400 / normal |
正文内容、辅助说明 |
3.4 行高规范
行高与字号保持合理比例,确保文本的可读性。
| 字号范围 | 推荐行高 | 行高/字号比例 |
|---|---|---|
| 28px及以上 | 字号 + 6-8px | 约 1.2 |
| 18-22px | 字号 + 6px | 约 1.3 |
| 14-16px | 字号 + 8px | 约 1.5 |
| 12px及以下 | 字号 + 4px | 约 1.4 |
3.5 字体令牌汇总
:root {
/* 字号 */
--font-size-xxl: 34px;
--font-size-xl: 28px;
--font-size-lg: 22px;
--font-size-md: 18px;
--font-size-base: 16px;
--font-size-sm: 14px;
--font-size-xs: 12px;
--font-size-xxs: 10px;
/* 行高 */
--line-height-xxl: 41px;
--line-height-xl: 34px;
--line-height-lg: 28px;
--line-height-md: 24px;
--line-height-base: 24px;
--line-height-sm: 20px;
--line-height-xs: 16px;
--line-height-xxs: 14px;
/* 字重 */
--font-weight-bold: 700;
--font-weight-semibold: 600;
--font-weight-regular: 400;
}
4 间距系统
4.1 基础间距单位
以 4px 作为基础间距单位,所有间距值均为 4px 的倍数。
| 间距名称 | 间距值 | CSS变量 | 用途 |
|---|---|---|---|
| 间距-xs | 4px | --spacing-xs |
元素内部最小间距 |
| 间距-sm | 8px | --spacing-sm |
紧密相关的元素间距 |
| 间距-md | 16px | --spacing-md |
标准间距 |
| 间距-lg | 24px | --spacing-lg |
较大间距 |
| 间距-xl | 32px | --spacing-xl |
大间距 |
| 间距-2xl | 48px | --spacing-2xl |
区块间距 |
| 间距-3xl | 64px | --spacing-3xl |
页面边距 |
4.2 组件内间距
| 组件类型 | 水平 padding | 垂直 padding | CSS变量 |
|---|---|---|---|
| 卡片类 | 16px | 12px | --card-padding |
| 按钮类 | 16px | 8px | --button-padding |
| 输入框 | 12px | 10px | --input-padding |
| 弹窗内容 | 24px | 20px | --modal-padding |
| 分组标题 | 16px | 8px | --section-padding |
4.3 组件间距
| 场景 | 间距值 | CSS变量 |
|---|---|---|
| 卡片之间 | 12px | --gap-card |
| 分组之间 | 24px | --gap-section |
| 列表项之间 | 8px | --gap-item |
| 表单项之间 | 16px | --gap-form |
| 按钮之间 | 12px | --gap-button |
| 图标与文字 | 8px | --gap-icon-text |
| 标题与内容 | 8px | --gap-title-content |
4.4 页面边距
| 页面类型 | 水平边距 | 垂直边距 | 最大宽度 |
|---|---|---|---|
| 宣传页 | 24px | 0 | 1200px |
| 登录/注册页 | 24px | 0 | 400px |
| Home页 | 24px | 0 | 1200px |
| 弹窗 | 24px | 0 | 480px |
4.5 间距令牌汇总
:root {
/* 基础间距 */
--spacing-xs: 4px;
--spacing-sm: 8px;
--spacing-md: 16px;
--spacing-lg: 24px;
--spacing-xl: 32px;
--spacing-2xl: 48px;
--spacing-3xl: 64px;
/* 组件内间距 */
--card-padding: 16px 12px;
--button-padding: 8px 16px;
--input-padding: 10px 12px;
--modal-padding: 24px 20px;
--section-padding: 8px 16px;
/* 组件间距 */
--gap-card: 12px;
--gap-section: 24px;
--gap-item: 8px;
--gap-form: 16px;
--gap-button: 12px;
--gap-icon-text: 8px;
--gap-title-content: 8px;
/* 页面边距 */
--page-margin: 24px;
--page-max-width: 1200px;
}
5 圆角与阴影
5.1 圆角层级
建立统一的圆角规范,不同场景使用不同层级的圆角。
| 圆角层级 | 圆角值 | CSS变量 | 使用场景 |
|---|---|---|---|
| 圆角-sm | 4px | --radius-sm |
小按钮、徽章、标签 |
| 圆角-md | 8px | --radius-md |
卡片、输入框、弹窗 |
| 圆角-lg | 12px | --radius-lg |
大卡片、分组容器 |
| 圆角-xl | 16px | --radius-xl |
弹窗、侧边栏 |
| 圆角-full | 9999px | --radius-full |
头像、圆形按钮、Pill标签 |
5.2 阴影规范
阴影用于表现层级关系和交互状态,层级越高阴影越明显。
| 阴影层级 | 阴影值 | CSS变量 | 使用场景 |
|---|---|---|---|
| 阴影-sm | 0 1px 2px rgba(0, 0, 0, 0.05) |
--shadow-sm |
微小投影、分隔线 |
| 阴影-md | 0 2px 8px rgba(0, 0, 0, 0.08) |
--shadow-md |
卡片悬停、按钮按下 |
| 阴影-lg | 0 4px 16px rgba(0, 0, 0, 0.1) |
--shadow-lg |
弹窗、下拉菜单 |
| 阴影-xl | 0 8px 32px rgba(0, 0, 0, 0.12) |
--shadow-xl |
重要弹窗、模态框 |
| 阴影-inner | inset 0 2px 4px rgba(0, 0, 0, 0.06) |
--shadow-inner |
输入框内陷效果 |
5.3 交互状态阴影
| 交互状态 | 阴影效果 | 说明 |
|---|---|---|
| 默认状态 | 0 1px 3px rgba(0, 0, 0, 0.06) |
基础卡片投影 |
| 悬停状态 | 0 4px 12px rgba(0, 122, 255, 0.15) |
品牌色微光效果 |
| 按下状态 | 0 0 0 3px rgba(0, 122, 255, 0.2) |
品牌色边框扩散 |
| 选中状态 | 0 0 0 2px var(--color-primary) |
品牌色描边 |
5.4 圆角与阴影令牌汇总
:root {
/* 圆角 */
--radius-sm: 4px;
--radius-md: 8px;
--radius-lg: 12px;
--radius-xl: 16px;
--radius-full: 9999px;
/* 阴影 */
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
--shadow-md: 0 2px 8px rgba(0, 0, 0, 0.08);
--shadow-lg: 0 4px 16px rgba(0, 0, 0, 0.1);
--shadow-xl: 0 8px 32px rgba(0, 0, 0, 0.12);
--shadow-inner: inset 0 2px 4px rgba(0, 0, 0, 0.06);
}
6 组件设计规范
6.1 纪念日卡片
纪念日卡片用于展示用户的重要日期,支持倒计时显示和重复规则标识。
布局结构:
┌─────────────────────────────────────────────────────────┐
│ [左侧色条] 纪念日名称(主标题) [标识] │
│ 倒计时 + 日期信息(副标题) │
└─────────────────────────────────────────────────────────┘
尺寸规范:
| 属性 | 规范值 |
|---|---|
| 卡片高度 | 60px |
| 左侧色条宽度 | 4px |
| 圆角 | 8px |
| 内边距 | 12px 16px |
样式规范:
| 元素 | 字号 | 字重 | 颜色 |
|---|---|---|---|
| 纪念日名称 | 16px | 600 | --color-text-primary |
| 倒计时 | 14px | 400 | --color-text-secondary |
| 日期信息 | 12px | 400 | --color-text-tertiary |
| 色条颜色 | - | - | --color-anniversary (#AF52DE) |
状态定义:
| 状态 | 视觉效果 |
|---|---|
| 默认 | 白色背景,轻微阴影 |
| 悬停 | 背景色变浅,品牌色微光阴影 |
| 即将到来(30天内) | 高亮显示,倒计时文字使用品牌色 |
| 今日 | 背景色为 --color-primary-light,倒计时显示"今日" |
重复标识:
| 重复类型 | 图标/标识 | 说明 |
|---|---|---|
| 仅一次 | 无标识 | 不重复 |
| 年度重复 | 循环图标 (360度旋转箭头) | 每年重复 |
| 月度重复 | 双循环图标 | 每月重复 |
农历/节假日标识:
| 类型 | 样式 |
|---|---|
| 农历 | 橙色文字"农历",带月亮图标 |
| 法定节假日 | 红色"节假日"标签 |
6.2 提醒卡片
提醒卡片用于展示待办任务,支持完成标记和过期状态。
布局结构:
┌─────────────────────────────────────────────────────────┐
│ [checkbox] 提醒内容(主标题) [时间] │
└─────────────────────────────────────────────────────────┘
尺寸规范:
| 属性 | 规范值 |
|---|---|
| 卡片高度 | 50px |
| checkbox尺寸 | 20px x 20px |
| 圆角 | 8px |
| 内边距 | 10px 16px |
样式规范:
| 元素 | 字号 | 字重 | 颜色 |
|---|---|---|---|
| 提醒内容 | 14px | 400 | --color-text-primary |
| 时间信息 | 12px | 400 | --color-text-tertiary |
| 色条颜色 | - | - | --color-reminder (#007AFF) |
Checkbox 样式:
| 属性 | 规范值 |
|---|---|
| 未选中 | 灰色边框,圆角4px |
| 选中 | 绿色背景 + 白色checkmark |
| 悬停 | 边框加深 |
分组样式:
| 分组名称 | 标题颜色 | 标题字号 |
|---|---|---|
| 今天 | --color-text-primary |
14px |
| 明天 | --color-text-primary |
14px |
| 更久之后 | --color-text-secondary |
14px |
| 已错过 | --color-error |
14px |
完成状态:
| 状态 | 视觉效果 |
|---|---|
| 未完成 | 正常显示 |
| 已完成 | 内容灰色划线,时间显示完成时间,移至分组底部 |
| 已过期 | 红色高亮,显示在"已错过"分组顶部 |
6.3 便签编辑器
便签区域提供富文本编辑能力,采用 Quill 编辑器组件。
布局结构:
┌─────────────────────────────────────────────────────┐
│ [便签标题] [清空按钮] │
├─────────────────────────────────────────────────────┤
│ ┌───────────────────────────────────────────────┐ │
│ │ 富文本编辑器容器 │ │
│ │ (可编辑区域) │ │
│ └───────────────────────────────────────────────┘ │
│ [保存状态:已保存] │
└─────────────────────────────────────────────────────┘
尺寸规范:
| 属性 | 规范值 |
|---|---|
| 便签区域高度 | 占右侧区域的50% |
| 编辑器最小高度 | 200px |
| 工具栏高度 | 40px |
| 圆角 | 8px |
工具栏按钮:
| 按钮 | 图标 | 用途 |
|---|---|---|
| H1 | 标题1 | 一级标题 |
| H2 | 标题2 | 二级标题 |
| B | 粗体 | 加粗文字 |
| I | 斜体 | 斜体文字 |
| U | 下划线 | 添加下划线 |
| S | 删除线 | 添加删除线 |
| 链接 | 链接图标 | 插入链接 |
| 有序列表 | 数字列表 | 有序列表 |
| 无序列表 | 圆点列表 | 无序列表 |
保存状态指示:
| 状态 | 颜色 | 位置 |
|---|---|---|
| 已保存 | --color-success |
右上角 |
| 保存中 | --color-text-tertiary + 加载动画 |
右上角 |
| 离线保存 | --color-warning |
右上角 |
空状态:
| 状态 | 显示内容 |
|---|---|
| 便签为空 | "开始记录你的想法...",灰色文字 --color-text-placeholder |
6.4 AI对话框
AI对话区域是产品的核心特色,采用聊天气泡形式展示对话历史。
布局结构:
┌─────────────────────────────────────────────────────┐
│ [AI区域标题] │
├─────────────────────────────────────────────────────┤
│ ┌───────────────┐ ┌─────────────────────────────┐ │
│ │ │ │ AI消息气泡 │ │
│ │ AI头像 │ │ (自然语言解析结果) │ │
│ │ │ └─────────────────────────────┘ │
│ └───────────────┘ │
│ ┌─────────────────────────────┐ ┌───────────────┐ │
│ │ 用户消息气泡 │ │ │ │
│ │ (用户输入内容) │ │ 用户头像 │ │
│ └─────────────────────────────┘ │ │ │
│ └───────────────┘ │
├─────────────────────────────────────────────────────┤
│ ┌─────────────────────────────────────────────────┐│
│ │ [输入框:输入描述要添加的纪念日或提醒...] [发送] ││
│ └─────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────┘
气泡样式:
| 气泡类型 | 背景色 | 圆角 | 最大宽度 |
|---|---|---|---|
| AI气泡 | --color-bg-light (浅灰) |
16px | 280px |
| 用户气泡 | --color-primary-light (浅蓝) |
16px | 280px |
| 解析确认卡片 | 白色 + 边框 | 12px | 100% |
气泡内边距:12px 16px
发送按钮:
| 状态 | 背景色 | 效果 |
|---|---|---|
| 默认 | --color-primary |
蓝色圆形 |
| 悬停 | --color-primary-dark |
颜色加深 |
| disabled | --color-text-placeholder |
灰色不可点击 |
解析确认卡片:
| 元素 | 样式 |
|---|---|
| 卡片背景 | 白色,边框2px实线 --color-primary-light |
| 卡片圆角 | 12px |
| 确认按钮 | 主要按钮样式 |
| 修改按钮 | 次要按钮样式 |
6.5 详情弹窗
点击纪念日或提醒卡片时弹出详情弹窗,支持二次编辑。
布局结构:
┌─────────────────────────────────────────────────────┐
│ [X] 编辑纪念日 / 编辑提醒 [删除]│
├─────────────────────────────────────────────────────┤
│ ┌───────────────────────────────────────────────┐ │
│ │ 表单字段区域 │ │
│ │ - 输入框/选择器 │ │
│ │ - 开关/下拉选择 │ │
│ └───────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────┤
│ [取消] [保存] │
└─────────────────────────────────────────────────────┘
尺寸规范:
| 属性 | 规范值 |
|---|---|
| 弹窗宽度 | 400px - 480px |
| 弹窗最大高度 | 80vh |
| 圆角 | 16px |
| 头部高度 | 52px |
| 底部按钮区高度 | 60px |
头部样式:
| 元素 | 样式 |
|---|---|
| 标题 | 中标题 18px,字重 600,颜色 --color-text-primary |
| 关闭按钮 | 20px x 20px,灰色图标 |
| 删除按钮 | 红色文字按钮,字重 500 |
表单控件样式:
| 控件类型 | 样式规范 |
|---|---|
| 输入框 | 高度 40px,圆角 8px,边框 --color-border,聚焦边框 --color-primary |
| 标签 | 小正文 14px,颜色 --color-text-secondary,上方留白 8px |
| 开关 | iOS样式,圆角 16px,滑块白色 |
| 下拉选择 | 右侧下拉箭头,高度 40px,圆角 8px |
操作按钮:
| 按钮类型 | 样式 |
|---|---|
| 保存按钮 | 主要按钮,蓝色背景,白色文字 |
| 取消按钮 | 次要按钮,灰色边框,黑色文字 |
| 删除按钮 | 危险按钮,红色文字,无背景 |
6.6 按钮样式
按钮是用户操作的主要入口,需要清晰区分主次和危险操作。
主要按钮:
| 属性 | 规范值 |
|---|---|
| 背景色 | --color-primary (#007AFF) |
| 文字颜色 | 白色 |
| 高度 | 36px - 44px |
| 圆角 | 8px |
| 字重 | 600 |
| 字重 | 14px |
| 内边距 | 0 20px |
| 悬停背景 | --color-primary-dark (#0056CC) |
次要按钮:
| 属性 | 规范值 |
|---|---|
| 背景色 | 透明 |
| 文字颜色 | --color-text-primary |
| 边框 | 1px solid --color-border |
| 高度 | 36px - 44px |
| 圆角 | 8px |
| 字号 | 14px |
| 内边距 | 0 20px |
| 悬停背景 | --color-bg-light |
文字按钮:
| 属性 | 规范值 |
|---|---|
| 背景色 | 透明 |
| 文字颜色 | --color-primary |
| 高度 | 36px |
| 圆角 | 无(0px) |
| 字号 | 14px |
| 内边距 | 0 12px |
| 悬停背景 | --color-primary-light |
危险按钮(删除/清除):
| 属性 | 规范值 |
|---|---|
| 背景色 | 透明 |
| 文字颜色 | --color-error |
| 边框 | 1px solid --color-error |
| 高度 | 36px - 44px |
| 圆角 | 8px |
| 字号 | 14px |
| 内边距 | 0 20px |
| 悬停背景 | --color-error + 10% opacity |
按钮尺寸变体:
| 变体 | 高度 | 字号 | 用途 |
|---|---|---|---|
| 小按钮 | 28px | 12px | 工具栏、徽章 |
| 中按钮 | 36px | 14px | 表单操作 |
| 大按钮 | 44px | 16px | 主要行动按钮 |
| 大号按钮 | 52px | 17px | 宣传页CTA |
7 页面布局规范
7.1 宣传页布局
宣传页采用极简设计,分为三个主要区域。
布局结构:
┌─────────────────────────────────────────────────────────┐
│ [Logo: 掐日子 + Slogan] [登录][注册]│
├─────────────────────────────────────────────────────────┤
│ │
│ 让重要日期不再错过 │
│ │
│ AI智能解析 · 轻松管理纪念日 · 即时提醒 │
│ │
│ [开始使用] │
│ │
├─────────────────────────────────────────────────────────┤
│ © 2025 掐日子 隐私政策 服务条款 │
└─────────────────────────────────────────────────────────┘
区域规范:
| 区域 | 高度 | 背景色 |
|---|---|---|
| 顶部导航区 | 60px | 白色 |
| 内容展示区 | 自适应(最小600px) | 白色 |
| 底部信息区 | 60px | --color-bg-light |
Logo规范:
| 元素 | 样式 |
|---|---|
| 产品名称 | 20px,字重 700,品牌色 |
| Slogan | 14px,灰色 --color-text-tertiary |
CTA按钮:
| 属性 | 规范值 |
|---|---|
| 尺寸 | 大号按钮(高度52px) |
| 圆角 | 26px (pill形状) |
| 文字 | "开始使用" |
7.2 登录/注册页布局
登录和注册采用同一页面布局,通过Tab切换。
布局结构:
┌─────────────────────────────────────────────────────┐
│ │
│ [Logo] │
│ │
│ [登录] [注册] │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 邮箱地址 │ │
│ └─────────────────────────────────────────────┘ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 密码 │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ [登录按钮] │
│ │
│ 还没有账号?点击注册 │
│ │
└─────────────────────────────────────────────────────┘
卡片规范:
| 属性 | 规范值 |
|---|---|
| 卡片宽度 | 400px |
| 卡片圆角 | 16px |
| 卡片背景 | 白色 |
| 卡片阴影 | --shadow-lg |
输入框规范:
| 属性 | 规范值 |
|---|---|
| 高度 | 44px |
| 圆角 | 8px |
| 边框 | 1px solid --color-border |
| 间距 | 下边距 16px |
Tab样式:
| 状态 | 视觉效果 |
|---|---|
| 激活 | 下边框2px实线 --color-primary,文字品牌色 |
| 未激活 | 文字灰色 --color-text-tertiary,无下划线 |
7.3 Home页四区布局
Home页面采用三栏布局,总宽度1200px居中显示。
布局结构:
┌─────────────────────────────────────────────────────────────────────┐
│ 顶部导航栏(60px) │
├───────────────┬───────────────────────────────────────┬─────────────┤
│ │ │ │
│ 纪念日列表 │ 主内容区 │ 便签区 │
│ (40%宽度) │ (40%宽度) │ (20%) │
│ │ │ │
│ + 纪念日 │ │ ┌─────────┐│
│ + 提醒列表 │ │ │ 便签 ││
│ (40%宽度) │ │ │ 编辑器 ││
│ │ │ └─────────┘│
│ │ │ │
│ │ │ ┌─────────┐│
│ │ │ │ AI ││
│ │ │ │ 对话 ││
│ │ │ │ 区域 ││
│ │ │ └─────────┘│
│ │ │ │
├───────────────┴───────────────────────────────────────┴─────────────┤
│ 底部版权信息 │
└─────────────────────────────────────────────────────────────────────┘
顶部导航栏:
| 属性 | 规范值 |
|---|---|
| 高度 | 60px |
| 背景色 | 白色 |
| 内容 | Logo + 用户邮箱 + 登出按钮 |
左侧区域(纪念日 + 提醒):
| 属性 | 规范值 |
|---|---|
| 宽度占比 | 40%(约480px) |
| 纪念日区域高度 | 50% |
| 提醒区域高度 | 50% |
| 分割线 | 1px solid --color-bg-darker |
主内容区(便签 + AI对话):
| 属性 | 规范值 |
|---|---|
| 宽度占比 | 60%(约720px) |
| 便签区域高度 | 50% |
| AI对话区域高度 | 50% |
| 便签与AI之间 | 16px间距 |
底部版权信息:
| 属性 | 规范值 |
|---|---|
| 高度 | 40px |
| 背景色 | --color-bg-light |
| 文字 | 12px,灰色 --color-text-tertiary |
7.4 响应式适配规则
| 断点 | 屏幕宽度 | 布局变化 |
|---|---|---|
| xs | < 768px | 单栏堆叠布局 |
| sm | 768px - 1024px | 两栏布局(左侧合并,右侧保留) |
| md | 1024px - 1200px | 三栏布局(宽度压缩) |
| lg | 1200px - 1440px | 标准三栏布局 |
| xl | > 1440px | 三栏布局(内容居中,最大宽度1440px) |
移动端适配方案:
| 场景 | 适配方案 |
|---|---|
| 导航栏 | 折叠为汉堡菜单 |
| 三栏布局 | 改为Tab切换(纪念日/提醒/其他) |
| 弹窗 | 全屏显示 |
| 卡片 | 占据全宽 |
8 交互动效规范
8.1 悬停效果
交互元素在鼠标悬停时应有明确的视觉反馈。
| 元素类型 | 悬停效果 |
|---|---|
| 主要按钮 | 背景色加深5%,轻微上移2px |
| 次要按钮 | 背景色变为 --color-bg-light |
| 卡片 | 阴影加深,轻微上移,cursor变为pointer |
| 链接 | 颜色变为 --color-primary-dark,下划线显示 |
| 表格行 | 背景色变为 --color-bg-light |
8.2 点击反馈
用户点击操作应有即时的视觉反馈。
| 元素类型 | 点击效果 |
|---|---|
| 按钮 | 背景色变暗10%,轻微下沉 |
| 卡片 | 阴影消失,按下效果 |
| checkbox | 立即显示选中状态,checkmark动画 |
| 链接 | 颜色变化,无动画 |
| 图标按钮 | 灰色圆形背景闪烁 |
checkbox动画:
| 阶段 | 动画效果 |
|---|---|
| 点击瞬间 | 缩放0.8倍 |
| 选中完成 | 缩放1.0倍 + 绿色背景填充 |
| checkmark | 从中心向外展开的线条动画 |
8.3 过渡动画
元素状态变化时使用平滑的过渡动画。
通用过渡:
transition: all 0.2s ease-out;
具体场景动画:
| 场景 | 进入动画 | 离开动画 |
|---|---|---|
| 弹窗显示 | fadeIn + scale(0.95) -> fadeIn + scale(1) | fadeOut + scale(1) -> fadeOut + scale(0.95) |
| 下拉菜单 | slideDown (200ms) | slideUp (150ms) |
| 列表项增删 | fadeIn + slideIn | fadeOut + slideOut |
| 卡片悬停 | scale(1.02) | scale(1) |
| 按钮点击 | scale(0.95) | scale(1) |
AI消息动画:
| 阶段 | 动画效果 | 时长 |
|---|---|---|
| 消息出现 | 渐显 + 打字机效果 | 300ms |
| 解析中 | 气泡呼吸动画 | 持续 |
| 发送中 | 发送按钮旋转 | 持续 |
保存状态指示:
| 状态切换 | 动画效果 |
|---|---|
| 保存中 -> 已保存 | 绿色对勾从小到大的缩放动画 |
| 离线保存 | 黄色警告图标闪烁 |
8.4 动画令牌
:root {
/* 动画时长 */
--duration-fast: 150ms;
--duration-base: 200ms;
--duration-slow: 300ms;
--duration-slower: 500ms;
/* 动画缓动 */
--ease-out: cubic-bezier(0.4, 0, 0.2, 1);
--ease-in: cubic-bezier(0, 0, 0.2, 1);
--ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
--ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
}
9 图标规范
9.1 图标风格
图标采用线性风格(Outline),与苹果设计语言保持一致。
| 属性 | 规范定义 |
|---|---|
| 线条粗细 | 1.5px - 2px |
| 圆角 | 2px(线条端点) |
| 颜色 | 与文字颜色一致 |
| 尺寸 | 16px, 20px, 24px, 32px |
| 风格 | 线性、空心、圆角矩形框 |
9.2 图标尺寸
| 尺寸 | CSS变量 | 使用场景 |
|---|---|---|
| 16px | --icon-size-sm |
表格内图标、标签旁图标 |
| 20px | --icon-size-md |
卡片内图标、按钮图标 |
| 24px | --icon-size-lg |
区域标题图标、独立图标 |
| 32px | --icon-size-xl |
Logo、空状态图标 |
9.3 图标使用场景
| 图标名称 | 图标形状 | 用途 |
|---|---|---|
| 添加 | 加号 (+) | 添加按钮 |
| 删除 | 垃圾桶 | 删除操作 |
| 编辑 | 铅笔 | 编辑操作 |
| 保存 | 磁盘/对勾 | 保存操作 |
| 关闭 | X号 | 关闭弹窗 |
| 日历 | 日历形状 | 纪念日/日期相关 |
| 闹钟 | 闹钟形状 | 提醒相关 |
| 星星 | 星星形状 | 重要标记 |
| 循环 | 循环箭头 | 重复规则 |
| 月亮 | 月亮形状 | 农历标识 |
| 旗帜 | 旗帜形状 | 节假日标识 |
| 勾选 | 对勾 | 完成、确认 |
| 发送 | 箭头 | 发送消息 |
| 用户 | 用户头像 | 个人中心 |
| 登出 | 退出箭头 | 登出操作 |
| AI | 机器人头像 | AI对话区域 |
| 便签 | 文档形状 | 便签区域 |
9.4 图标颜色规则
| 场景 | 图标颜色 |
|---|---|
| 普通操作 | --color-text-secondary |
| 主要操作 | --color-primary |
| 完成状态 | --color-success |
| 警告状态 | --color-warning |
| 危险操作 | --color-error |
| 禁用状态 | --color-text-placeholder |
9.5 图标令牌
:root {
/* 图标尺寸 */
--icon-size-sm: 16px;
--icon-size-md: 20px;
--icon-size-lg: 24px;
--icon-size-xl: 32px;
/* 图标颜色 */
--icon-color-primary: var(--color-primary);
--icon-color-secondary: var(--color-text-secondary);
--icon-color-tertiary: var(--color-text-tertiary);
--icon-color-success: var(--color-success);
--icon-color-warning: var(--color-warning);
--icon-color-error: var(--color-error);
--icon-color-disabled: var(--color-text-placeholder);
/* 图标线条粗细 */
--icon-stroke-width: 1.5px;
}
10 设计资源
10.1 组件速查表
| 组件名称 | 高度 | 圆角 | 字号 | 主要颜色 |
|---|---|---|---|---|
| 纪念日卡片 | 60px | 8px | 16px/14px | --color-anniversary |
| 提醒卡片 | 50px | 8px | 14px | --color-reminder |
| 主要按钮 | 36-44px | 8px | 14-16px | --color-primary |
| 次要按钮 | 36-44px | 8px | 14px | 透明+边框 |
| 输入框 | 40px | 8px | 14px | --color-border |
| 弹窗 | 自适应 | 16px | 16px | 白色 |
| 聊天气泡 | 自适应 | 16px | 14px | 浅灰/浅蓝 |
10.2 常见颜色组合
| 场景 | 背景色 | 文字色 | 边框色 |
|---|---|---|---|
| 主要按钮 | #007AFF |
#FFFFFF |
无 |
| 次要按钮 | 透明 | #1D1D1F |
#C6C6C8 |
| 纪念日卡片 | #FFFFFF |
#1D1D1F |
无 |
| 提醒卡片 | #FFFFFF |
#1D1D1F |
无 |
| AI气泡 | #F5F5F7 |
#1D1D1F |
无 |
| 用户气泡 | #EAF3FF |
#1D1D1F |
无 |
| 弹窗 | #FFFFFF |
#1D1D1F |
无 |
| 错误提示 | #FFF2F2 |
#FF3B30 |
#FF3B30 |
10.3 快捷开发样式类
/* 按钮类 */
.btn-primary {
background: var(--color-primary);
color: white;
height: 40px;
border-radius: 8px;
font-weight: 600;
transition: all 0.2s ease;
}
.btn-secondary {
background: transparent;
color: var(--color-text-primary);
border: 1px solid var(--color-border);
height: 40px;
border-radius: 8px;
transition: all 0.2s ease;
}
/* 卡片类 */
.card {
background: white;
border-radius: 8px;
padding: 12px 16px;
box-shadow: var(--shadow-sm);
transition: all 0.2s ease;
}
.card:hover {
box-shadow: var(--shadow-md);
transform: translateY(-2px);
}
/* 输入框类 */
.input {
height: 40px;
border: 1px solid var(--color-border);
border-radius: 8px;
padding: 0 12px;
font-size: 14px;
transition: all 0.2s ease;
}
.input:focus {
outline: none;
border-color: var(--color-primary);
box-shadow: 0 0 0 3px var(--color-primary-light);
}
/* 弹窗类 */
.modal-overlay {
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.4);
display: flex;
align-items: center;
justify-content: center;
animation: fadeIn 0.2s ease;
}
.modal {
background: white;
border-radius: 16px;
max-width: 480px;
width: 90%;
max-height: 80vh;
overflow: auto;
animation: scaleIn 0.2s ease;
}
11 附录
11.1 设计决策记录
| 决策项 | 决策内容 | 理由 |
|---|---|---|
| 圆角值 | 8px作为标准圆角 | 与苹果设计语言一致,视觉平衡 |
| 主色调 | 系统蓝 #007AFF | 用户熟悉度高,易于识别操作入口 |
| 卡片高度 | 纪念日60px,提醒50px | 纪念日信息更多,需要更大空间 |
| 间距单位 | 4px | 与Tailwind CSS一致,便于开发 |
| 图标风格 | 线性图标 | 与苹果风格一致,清晰易读 |
11.2 待确认事项
以下事项需要在设计评审中确认:
- 倒计时超过365天时是否显示"还有X年"还是统一显示天数
- 法定节假日是否需要特殊视觉效果(如红色高亮)
- AI对话区域的聊天记录是否需要持久化存储
- 便签是否支持多种颜色标签或主题
11.3 更新日志
| 版本 | 日期 | 更新内容 | 更新人 |
|---|---|---|---|
| v1.0.0 | 2026-01-29 | 初稿完成 | UI设计师 |