- 添加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>
1139 lines
41 KiB
Markdown
1139 lines
41 KiB
Markdown
# 掐日子(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 颜色令牌汇总
|
||
|
||
```css
|
||
: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 字体令牌汇总
|
||
|
||
```css
|
||
: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 间距令牌汇总
|
||
|
||
```css
|
||
: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 圆角与阴影令牌汇总
|
||
|
||
```css
|
||
: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 过渡动画
|
||
|
||
元素状态变化时使用平滑的过渡动画。
|
||
|
||
**通用过渡**:
|
||
```css
|
||
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 动画令牌
|
||
|
||
```css
|
||
: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 图标令牌
|
||
|
||
```css
|
||
: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 快捷开发样式类
|
||
|
||
```css
|
||
/* 按钮类 */
|
||
.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 待确认事项
|
||
|
||
以下事项需要在设计评审中确认:
|
||
|
||
1. 倒计时超过365天时是否显示"还有X年"还是统一显示天数
|
||
2. 法定节假日是否需要特殊视觉效果(如红色高亮)
|
||
3. AI对话区域的聊天记录是否需要持久化存储
|
||
4. 便签是否支持多种颜色标签或主题
|
||
|
||
### 11.3 更新日志
|
||
|
||
| 版本 | 日期 | 更新内容 | 更新人 |
|
||
|------|------|---------|--------|
|
||
| v1.0.0 | 2026-01-29 | 初稿完成 | UI设计师 |
|