# 银龄智慧移动端UI设计规范
## 概述
本文档定义了银龄智慧移动端应用的UI设计规范,基于中国水墨风格设计理念,确保所有移动端页面保持一致的视觉风格和用户体验。
## 设计原则
1. **文化性**:体现中国传统文化美学,以水墨风格为核心
2. **适老性**:专为银龄用户群体优化,保证良好的可访问性
3. **简洁性**:界面简洁直观,减少认知负担
4. **一致性**:所有页面遵循统一的设计语言和交互模式
## 色彩系统
### 主色调 - 中国水墨
```css
/* 水墨色彩系统 */
--ink-light: #f5f3f0; /* 宣纸背景色 */
--ink-medium: #d4c4a8; /* 淡墨 */
--ink-dark: #8b7355; /* 浓墨 */
--ink-deep: #3a2f26; /* 焦墨 */
/* 点缀色彩 */
--accent-red: #a85c5c; /* 朱砂 */
--accent-blue: #4a6b7c; /* 花青 */
--accent-green: #5c7c5c; /* 石绿 */
/* 文字色彩 */
--text-primary: #2f1f0f; /* 墨色文字 */
--text-secondary: #5d4e3b; /* 淡墨文字 */
--text-light: #8b7355; /* 极淡文字 */
```
### 语义色彩
| 场景 | 颜色值 | 说明 |
|------|--------|------|
| 成功 | #5c7c5c | 石绿色,用于正向反馈 |
| 警告 | #a85c5c | 朱砂色,用于警示信息 |
| 错误 | #a85c5c | 朱砂色,用于错误提示 |
| 信息 | #4a6b7c | 花青色,用于信息提示 |
## 字体系统
### 字体层级
```typescript
// 字体样式定义
const FONT_STYLES = {
title: 'font-serif text-3xl font-bold tracking-wide', // 页面标题
sectionTitle: 'font-serif text-2xl font-semibold tracking-wide', // 区块标题
body: 'font-sans text-base leading-relaxed', // 正文文本
caption: 'font-sans text-sm', // 说明文字
small: 'font-sans text-xs', // 辅助文字
};
```
### 字体规范
| 类型 | 字体 | 大小 | 行高 | 字重 | 用途 |
|------|------|------|------|------|------|
| 标题 | serif | 28px | 1.2 | bold | 页面主标题 |
| 区块标题 | serif | 24px | 1.2 | semibold | 内容区块标题 |
| 正文 | sans | 16px | 1.6 | normal | 主要内容文字 |
| 说明 | sans | 14px | 1.4 | normal | 辅助说明文字 |
| 标签 | sans | 12px | 1.3 | normal | 标签、提示文字 |
## 布局规范
### 基础布局结构
```css
/* 移动端标准布局 */
.container {
min-height: 100vh;
background-color: var(--ink-light);
padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
}
.content-area {
padding: 16px;
margin-bottom: 64px; /* 底部标签栏高度 */
}
```
### 间距系统
| 间距 | 数值 | 用途 |
|------|------|------|
| xs | 4px | 图标与文字间距 |
| sm | 8px | 组件内部间距 |
| md | 16px | 组件间间距 |
| lg | 24px | 区块间间距 |
| xl | 32px | 页面区块间距 |
## 组件规范
### 1. 头部导航栏
```typescript
// 标准头部导航栏
```
**规范说明**:
- 高度:自适应内容,建议auto
- 背景:宣纸色(var(--ink-light))
- 边框:淡墨色(var(--ink-medium)),透明度20%
- 阴影:轻微阴影,保持水墨质感
- 定位:sticky,顶部固定
### 2. 卡片组件
```typescript
// 标准卡片
```
**卡片变体**:
- 普通卡片:rgba(255,255,255,0.8)
- 高亮卡片:rgba(255,255,255,0.9)
- 透明卡片:rgba(255,255,255,0.6)
### 3. 按钮组件
#### 主要按钮
```typescript
```
#### 次要按钮
```typescript
```
### 4. 输入框组件
```typescript
```
### 5. 标签组件
```typescript
```
## 列表规范
### 1. 单列列表项
```typescript
{/* 左侧图片/图标 */}
![]()
{/* 中间内容 */}
{/* 右侧操作 */}
附加信息
```
### 2. 网格列表项
```typescript
```
## 底部标签栏
```typescript
// 底部标签栏容器
```
## 动效规范
### 过渡动画
| 类型 | 时长 | 缓动函数 | 用途 |
|------|------|----------|------|
| 快速 | 200ms | ease-out | 按钮悬停、标签切换 |
| 标准 | 300ms | ease-in-out | 页面切换、卡片展开 |
| 缓慢 | 500ms | ease-in-out | 模态框、抽屉动画 |
### 阴影动效
```css
/* 基础阴影 */
.shadow-sm {
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
}
/* 悬停阴影 */
.hover\:shadow-md:hover {
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
}
/* 点击阴影 */
.active\:shadow-lg:active {
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
}
```
## 响应式设计
### 断点系统
| 断点 | 宽度 | 描述 |
|------|------|------|
| xs | < 375px | 小屏手机 |
| sm | ≥ 375px | 标准手机 |
| md | ≥ 768px | 平板竖屏 |
| lg | ≥ 1024px | 平板横屏 |
### 适配规范
1. **小屏适配**:最小宽度320px,保证核心功能可用
2. **大屏优化**:最大宽度414px,居中显示,两侧留白
3. **字体适配**:基础字体16px,支持系统字体缩放
4. **触摸目标**:最小44×44px,符合iOS人机界面指南
## 可访问性规范
### 颜色对比度
| 文字颜色 | 背景颜色 | 对比度 | 是否符合WCAG 2.1 |
|----------|----------|--------|------------------|
| #2f1f0f | #f5f3f0 | 8.2:1 | AAA级 |
| #5d4e3b | #f5f3f0 | 5.9:1 | AA级 |
| #8b7355 | #f5f3f0 | 3.9:1 | AA级(大字体) |
### 无障碍设计
1. **语义标签**:使用正确的HTML语义标签
2. **键盘导航**:支持Tab键导航,焦点样式清晰
3. **屏幕阅读器**:提供aria-label和aria-describedby属性
4. **颜色无依赖**:重要信息不仅通过颜色传达
5. **文字缩放**:支持系统文字大小调整
## 图标规范
### 图标使用
```typescript
// Heroicons 使用示例
import { BriefcaseIcon } from '@heroicons/react/24/outline';
```
### 图标尺寸
| 用途 | 尺寸 | 示例 |
|------|------|------|
| 导航图标 | 24×24px | 底部标签栏 |
| 功能图标 | 20×20px | 卡片内图标 |
| 装饰图标 | 16×16px | 标签内小图标 |
| 大图标 | 32×32px | 空状态图标 |
## 图片规范
### 图片比例
| 类型 | 比例 | 用途 |
|------|------|------|
| 正方形 | 1:1 | 头像、缩略图 |
| 横向 | 16:9 | 轮播图、横幅 |
| 纵向 | 4:3 | 卡片图片 |
| 圆形 | 1:1 | 用户头像 |
### 图片处理
1. **懒加载**:使用loading="lazy"属性
2. **占位图**:提供默认占位图片
3. **WebP格式**:优先使用WebP格式,提供JPG备选
4. **尺寸优化**:移动端图片宽度不超过750px
## 交互规范
### 手势规范
| 手势 | 操作 | 反馈 |
|------|------|------|
| 点击 | 导航、选择 | 背景色变化 |
| 长按 | 上下文菜单 | 震动反馈 |
| 滑动 | 页面切换 | 视觉过渡 |
| 下拉 | 刷新 | 加载动画 |
### 加载状态
1. **骨架屏**:内容加载时的占位效果
2. **加载动画**:旋转动画或进度条
3. **错误状态**:友好的错误提示和重试按钮
4. **空状态**:清晰的空状态说明和引导
## 开发规范
### 文件结构
```
src/client/mobile/
├── components/ # 通用组件
│ ├── [ComponentName].tsx
│ └── index.ts
├── pages/ # 页面组件
│ ├── [PageName].tsx
│ └── index.ts
├── layouts/ # 布局组件
├── hooks/ # 自定义hooks
├── utils/ # 工具函数
└── styles/ # 样式文件
├── colors.ts # 色彩定义
├── fonts.ts # 字体定义
└── animations.ts # 动画定义
```
### 命名规范
1. **组件命名**:PascalCase
2. **文件命名**:kebab-case
3. **样式类名**:kebab-case
4. **常量命名**:UPPER_SNAKE_CASE
5. **变量命名**:camelCase
### 代码风格
```typescript
// 样式常量
const COLORS = {
ink: {
light: '#f5f3f0',
medium: '#d4c4a8',
dark: '#8b7355',
deep: '#3a2f26',
},
accent: {
red: '#a85c5c',
blue: '#4a6b7c',
green: '#5c7c5c',
}
};
// 字体样式
const FONT_STYLES = {
title: 'font-serif text-3xl font-bold tracking-wide',
body: 'font-sans text-base leading-relaxed',
};
```
## 测试规范
### 兼容性测试
1. **设备测试**:iPhone SE - iPhone 15 Pro Max
2. **系统测试**:iOS 14+,Android 8+
3. **浏览器测试**:Safari,Chrome,微信浏览器
4. **网络测试**:3G,4G,WiFi环境
### 功能测试
1. **触摸测试**:所有可点击元素测试
2. **手势测试**:滑动、下拉、长按等
3. **状态测试**:加载、空状态、错误状态
4. **性能测试**:滚动流畅度、动画性能
## 更新记录
| 版本 | 日期 | 更新内容 | 更新人 |
|------|------|----------|--------|
| 1.0 | 2025-07-21 | 初始版本创建 | 架构师 |
---
本文档将持续更新,如有疑问请联系UI设计团队。