# 银龄智慧移动端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设计团队。