mirror of
https://github.com/patdelphi/suanming.git
synced 2026-03-11 19:04:42 +08:00
feat: Enhanced lunar calendar display and Zi Shi calculation improvements
- Added full Chinese year display (农历一九七六年) - Implemented detailed solar term intervals (惊蛰后至春分前) - Enhanced Zi Shi calculation with professional explanations - Added lunar information display in frontend components - Improved accuracy of lunar date calculations - Removed redundant note texts for cleaner UI - Fixed syntax errors in analyzer modules
This commit is contained in:
204
docs/AI_INTERPRETATION_GUIDE.md
Normal file
204
docs/AI_INTERPRETATION_GUIDE.md
Normal file
@@ -0,0 +1,204 @@
|
||||
# AI解读功能使用指南
|
||||
|
||||
## 功能概述
|
||||
|
||||
AI解读功能是本系统的智能增强特性,通过调用大语言模型(如GPT)对传统命理分析结果进行深度解读和现代化阐释,为用户提供更加通俗易懂、贴近现代生活的指导建议。
|
||||
|
||||
## 主要特性
|
||||
|
||||
### 🧠 智能解读
|
||||
- 对八字、紫微斗数、易经占卜结果进行AI深度分析
|
||||
- 将古典命理术语转换为现代语言
|
||||
- 提供实用的人生指导和建议
|
||||
|
||||
### ⚙️ 灵活配置
|
||||
- 支持多种AI服务提供商(OpenAI、Azure OpenAI等)
|
||||
- 可自定义模型参数(温度、最大Token数等)
|
||||
- 支持自定义提示词模板
|
||||
|
||||
### 💾 结果缓存
|
||||
- 自动保存AI解读结果到本地存储
|
||||
- 避免重复调用,节省API费用
|
||||
- 支持重新解读功能
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 1. 配置AI服务
|
||||
|
||||
#### 方法一:环境变量配置(推荐)
|
||||
在项目根目录的 `.env` 文件中添加以下配置:
|
||||
|
||||
```env
|
||||
# AI API密钥
|
||||
VITE_AI_API_KEY=your-openai-api-key-here
|
||||
|
||||
# AI API服务地址
|
||||
VITE_AI_API_URL=https://api.openai.com/v1/chat/completions
|
||||
|
||||
# AI模型名称
|
||||
VITE_AI_MODEL_NAME=gpt-3.5-turbo
|
||||
|
||||
# AI请求最大Token数
|
||||
VITE_AI_MAX_TOKENS=2000
|
||||
|
||||
# AI温度参数(0-2,控制回答的创造性)
|
||||
VITE_AI_TEMPERATURE=0.7
|
||||
|
||||
# AI请求超时时间(毫秒)
|
||||
VITE_AI_TIMEOUT=30000
|
||||
```
|
||||
|
||||
#### 方法二:界面配置
|
||||
1. 在分析结果页面点击「AI解读」按钮
|
||||
2. 如果未配置,系统会提示配置AI设置
|
||||
3. 点击「配置」按钮打开配置界面
|
||||
4. 填写API Key、API地址等信息
|
||||
5. 点击「测试连接」验证配置
|
||||
6. 保存配置
|
||||
|
||||
### 2. 使用AI解读
|
||||
|
||||
#### 在分析结果页面
|
||||
1. 完成命理分析后,在结果页面找到「AI智能解读」区域
|
||||
2. 点击「AI解读」按钮
|
||||
3. 等待AI分析完成
|
||||
4. 查看AI解读结果
|
||||
|
||||
#### 在历史记录页面
|
||||
1. 进入历史记录页面
|
||||
2. 在记录列表中点击「AI解读」按钮,或
|
||||
3. 点击「查看」进入详情页,然后使用AI解读功能
|
||||
|
||||
### 3. 管理解读结果
|
||||
|
||||
- **查看解读**:点击「查看AI解读」展开/收起解读内容
|
||||
- **重新解读**:点击「重新解读」按钮获取新的AI分析
|
||||
- **配置管理**:点击「配置」按钮修改AI设置
|
||||
|
||||
## 支持的AI服务商
|
||||
|
||||
### OpenAI
|
||||
- **API地址**:`https://api.openai.com/v1/chat/completions`
|
||||
- **推荐模型**:`gpt-3.5-turbo`、`gpt-4`
|
||||
- **获取API Key**:访问 [OpenAI官网](https://platform.openai.com/api-keys)
|
||||
|
||||
### Azure OpenAI
|
||||
- **API地址**:`https://your-resource.openai.azure.com/openai/deployments/your-deployment/chat/completions?api-version=2023-12-01-preview`
|
||||
- **认证方式**:需要在请求头中使用 `api-key` 而不是 `Authorization`
|
||||
|
||||
### 其他兼容服务
|
||||
任何兼容OpenAI Chat Completions API格式的服务都可以使用,包括:
|
||||
- Anthropic Claude(通过代理)
|
||||
- 本地部署的开源模型
|
||||
- 其他云服务商的API
|
||||
|
||||
## 提示词模板
|
||||
|
||||
系统为不同的分析类型预设了专业的提示词模板:
|
||||
|
||||
### 八字分析提示词
|
||||
```
|
||||
你是一位专业的八字命理大师,请对以下八字分析结果进行深度解读和补充说明。
|
||||
|
||||
请从以下几个方面进行解读:
|
||||
1. 命格特点的深层含义
|
||||
2. 五行平衡对人生的具体影响
|
||||
3. 大运流年的关键转折点
|
||||
4. 实用的人生建议和注意事项
|
||||
5. 现代生活中的应用指导
|
||||
|
||||
请用通俗易懂的语言,结合现代生活实际,给出具有指导意义的解读。
|
||||
```
|
||||
|
||||
### 紫微斗数提示词
|
||||
```
|
||||
你是一位资深的紫微斗数专家,请对以下紫微斗数分析结果进行专业解读。
|
||||
|
||||
请重点分析:
|
||||
1. 命宫主星的性格特质解析
|
||||
2. 十二宫位的相互影响
|
||||
3. 大限小限的运势变化
|
||||
4. 桃花、财帛、事业等重点宫位分析
|
||||
5. 现实生活中的应用建议
|
||||
|
||||
请结合现代社会背景,提供实用的人生指导。
|
||||
```
|
||||
|
||||
### 易经占卜提示词
|
||||
```
|
||||
你是一位精通易经的占卜大师,请对以下易经占卜结果进行深入解读。
|
||||
|
||||
请从以下角度分析:
|
||||
1. 卦象的深层寓意
|
||||
2. 爻辞的具体指导意义
|
||||
3. 变卦的发展趋势
|
||||
4. 针对问题的具体建议
|
||||
5. 行动时机和注意事项
|
||||
|
||||
请用现代语言解释古典智慧,提供切实可行的指导。
|
||||
```
|
||||
|
||||
## 费用说明
|
||||
|
||||
- AI解读功能需要调用第三方AI服务,会产生API费用
|
||||
- 费用由您的AI服务商账户承担
|
||||
- 建议合理设置Token限制以控制费用
|
||||
- 系统会缓存解读结果,避免重复调用
|
||||
|
||||
## 常见问题
|
||||
|
||||
### Q: 为什么AI解读按钮是灰色的?
|
||||
A: 这表示AI配置不完整,请检查API Key、API地址等配置是否正确。
|
||||
|
||||
### Q: AI解读失败怎么办?
|
||||
A: 请检查:
|
||||
1. 网络连接是否正常
|
||||
2. API Key是否有效
|
||||
3. API地址是否正确
|
||||
4. 账户余额是否充足
|
||||
|
||||
### Q: 可以使用免费的AI服务吗?
|
||||
A: 可以使用任何兼容OpenAI API格式的服务,包括一些提供免费额度的服务。
|
||||
|
||||
### Q: AI解读结果不满意怎么办?
|
||||
A: 可以:
|
||||
1. 点击「重新解读」获取新的分析
|
||||
2. 调整温度参数改变AI的创造性
|
||||
3. 修改提示词模板以获得更符合需求的解读
|
||||
|
||||
### Q: 解读结果会保存吗?
|
||||
A: 是的,解读结果会自动保存到浏览器本地存储中,下次查看同一分析时会直接显示已保存的解读。
|
||||
|
||||
## 技术实现
|
||||
|
||||
### 架构设计
|
||||
- **配置管理**:`src/config/aiConfig.ts`
|
||||
- **服务层**:`src/services/aiInterpretationService.ts`
|
||||
- **UI组件**:`src/components/ui/AIInterpretationButton.tsx`
|
||||
- **配置界面**:`src/components/ui/AIConfigModal.tsx`
|
||||
|
||||
### 数据流程
|
||||
1. 用户触发AI解读
|
||||
2. 系统检查配置有效性
|
||||
3. 将分析结果转换为Markdown格式
|
||||
4. 使用提示词模板构建请求
|
||||
5. 调用AI API获取解读
|
||||
6. 显示结果并保存到本地存储
|
||||
|
||||
### 安全考虑
|
||||
- API Key等敏感信息存储在本地
|
||||
- 支持环境变量配置避免硬编码
|
||||
- 请求超时保护
|
||||
- 错误处理和用户友好提示
|
||||
|
||||
## 更新日志
|
||||
|
||||
### v1.0.0
|
||||
- 初始版本发布
|
||||
- 支持八字、紫微斗数、易经三种分析类型的AI解读
|
||||
- 提供完整的配置界面和结果管理功能
|
||||
- 集成到分析结果页面和历史记录页面
|
||||
|
||||
---
|
||||
|
||||
如有其他问题或建议,请联系开发团队。
|
||||
211
docs/FRONTEND_EXPORT_SETUP.md
Normal file
211
docs/FRONTEND_EXPORT_SETUP.md
Normal file
@@ -0,0 +1,211 @@
|
||||
# 前端页面导出功能设置说明
|
||||
|
||||
## 功能概述
|
||||
|
||||
新增了前端页面直接导出为PDF和PNG的功能,用户可以直接从分析结果页面生成:
|
||||
- **PDF文档**:支持分页的专业格式文档
|
||||
- **PNG长图**:完整页面截图,适合社交媒体分享
|
||||
|
||||
## 依赖安装
|
||||
|
||||
需要安装以下依赖包:
|
||||
|
||||
```bash
|
||||
npm install html2canvas jspdf
|
||||
```
|
||||
|
||||
或使用yarn:
|
||||
|
||||
```bash
|
||||
yarn add html2canvas jspdf
|
||||
```
|
||||
|
||||
## 功能特性
|
||||
|
||||
### PDF导出
|
||||
- ✅ A4纸张格式
|
||||
- ✅ 自动分页处理
|
||||
- ✅ 高质量输出
|
||||
- ✅ 保持原有样式和布局
|
||||
- ✅ 自动隐藏导出按钮等UI元素
|
||||
|
||||
### PNG导出
|
||||
- ✅ 高分辨率长图(2倍缩放)
|
||||
- ✅ 完整页面内容
|
||||
- ✅ 保持颜色和样式
|
||||
- ✅ 适合移动端查看和分享
|
||||
|
||||
## 已集成的组件
|
||||
|
||||
1. **CompleteYijingAnalysis** - 易经占卜分析页面
|
||||
2. **CompleteBaziAnalysis** - 八字命理分析页面
|
||||
3. **CompleteZiweiAnalysis** - 紫微斗数分析页面
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 在组件中使用
|
||||
|
||||
```tsx
|
||||
import PageExportButton from './ui/PageExportButton';
|
||||
|
||||
// 在JSX中使用
|
||||
<PageExportButton
|
||||
targetElementId="analysis-content" // 要导出的元素ID
|
||||
fileName="分析结果" // 文件名前缀
|
||||
title="页面导出" // 按钮显示文本
|
||||
className="sticky top-4 z-10" // 样式类名
|
||||
/>
|
||||
```
|
||||
|
||||
### 标记导出内容
|
||||
|
||||
为要导出的内容容器添加ID和data属性:
|
||||
|
||||
```tsx
|
||||
<div id="analysis-content" data-export-content>
|
||||
{/* 要导出的内容 */}
|
||||
</div>
|
||||
```
|
||||
|
||||
### 隐藏不需要导出的元素
|
||||
|
||||
为不需要出现在导出文件中的元素添加类名或属性:
|
||||
|
||||
```tsx
|
||||
<div className="no-export" data-no-export>
|
||||
{/* 下载按钮等UI元素 */}
|
||||
</div>
|
||||
```
|
||||
|
||||
## 技术实现
|
||||
|
||||
### 核心技术栈
|
||||
- **html2canvas**: 将DOM元素转换为Canvas
|
||||
- **jsPDF**: 生成PDF文档
|
||||
- **React**: 组件化开发
|
||||
- **TypeScript**: 类型安全
|
||||
|
||||
### 导出流程
|
||||
|
||||
1. **获取目标元素**: 根据ID或选择器定位要导出的DOM元素
|
||||
2. **生成Canvas**: 使用html2canvas将DOM转换为高质量Canvas
|
||||
3. **处理样式**: 自动处理CSS样式、字体、图片等
|
||||
4. **生成文件**:
|
||||
- PNG: 直接从Canvas生成图片
|
||||
- PDF: 将Canvas图片嵌入PDF文档,支持分页
|
||||
5. **自动下载**: 创建下载链接并触发下载
|
||||
|
||||
### 配置选项
|
||||
|
||||
```typescript
|
||||
// html2canvas配置
|
||||
{
|
||||
scale: 2, // 提高分辨率
|
||||
useCORS: true, // 支持跨域图片
|
||||
allowTaint: true, // 允许跨域内容
|
||||
backgroundColor: '#ffffff', // 背景色
|
||||
onclone: (clonedDoc) => {
|
||||
// 在克隆文档中隐藏不需要的元素
|
||||
}
|
||||
}
|
||||
|
||||
// jsPDF配置
|
||||
{
|
||||
orientation: 'portrait', // 纵向
|
||||
unit: 'mm', // 单位毫米
|
||||
format: 'a4' // A4格式
|
||||
}
|
||||
```
|
||||
|
||||
## 样式优化
|
||||
|
||||
### CSS类名约定
|
||||
|
||||
- `.no-export`: 不导出的元素
|
||||
- `[data-no-export]`: 不导出的元素(属性方式)
|
||||
- `[data-export-content]`: 主要导出内容
|
||||
- `.fixed`, `.sticky`, `.floating`: 自动隐藏的浮动元素
|
||||
|
||||
### 打印样式优化
|
||||
|
||||
可以添加打印专用样式:
|
||||
|
||||
```css
|
||||
@media print {
|
||||
.no-print {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.print-break {
|
||||
page-break-before: always;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 错误处理
|
||||
|
||||
- ✅ 网络错误处理
|
||||
- ✅ 图片加载失败处理
|
||||
- ✅ 浏览器兼容性检查
|
||||
- ✅ 用户友好的错误提示
|
||||
- ✅ Toast通知集成
|
||||
|
||||
## 浏览器兼容性
|
||||
|
||||
- ✅ Chrome 60+
|
||||
- ✅ Firefox 55+
|
||||
- ✅ Safari 12+
|
||||
- ✅ Edge 79+
|
||||
- ⚠️ IE不支持(需要polyfill)
|
||||
|
||||
## 性能优化
|
||||
|
||||
- 🚀 按需加载依赖
|
||||
- 🚀 Canvas复用
|
||||
- 🚀 内存管理
|
||||
- 🚀 大文件分块处理
|
||||
- 🚀 用户体验优化(加载状态、进度提示)
|
||||
|
||||
## 未来扩展
|
||||
|
||||
- [ ] 支持更多导出格式(DOCX、Excel等)
|
||||
- [ ] 批量导出功能
|
||||
- [ ] 云端存储集成
|
||||
- [ ] 自定义模板支持
|
||||
- [ ] 水印和签名功能
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **图片跨域**: 确保所有图片资源支持CORS
|
||||
2. **字体加载**: 确保自定义字体已完全加载
|
||||
3. **内容大小**: 超大内容可能影响性能
|
||||
4. **移动端**: 在移动设备上可能需要额外优化
|
||||
5. **隐私**: 导出功能完全在客户端执行,不会上传数据
|
||||
|
||||
## 故障排除
|
||||
|
||||
### 常见问题
|
||||
|
||||
1. **图片不显示**: 检查图片CORS设置
|
||||
2. **样式丢失**: 确保CSS已完全加载
|
||||
3. **字体异常**: 检查字体文件加载状态
|
||||
4. **内容截断**: 调整Canvas尺寸设置
|
||||
5. **下载失败**: 检查浏览器下载权限
|
||||
|
||||
### 调试方法
|
||||
|
||||
```javascript
|
||||
// 开启调试模式
|
||||
const canvas = await html2canvas(element, {
|
||||
logging: true, // 开启日志
|
||||
debug: true // 调试模式
|
||||
});
|
||||
```
|
||||
|
||||
## 更新日志
|
||||
|
||||
### v1.0.0 (2025-01-21)
|
||||
- ✅ 初始版本发布
|
||||
- ✅ 支持PDF和PNG导出
|
||||
- ✅ 集成到三个主要分析组件
|
||||
- ✅ 完整的错误处理和用户体验
|
||||
265
docs/TYPOGRAPHY_GUIDE.md
Normal file
265
docs/TYPOGRAPHY_GUIDE.md
Normal file
@@ -0,0 +1,265 @@
|
||||
# 神机阁字体规范指南
|
||||
|
||||
## 📖 概述
|
||||
|
||||
本指南定义了神机阁项目的统一字体规范系统,旨在解决项目中字体大小混乱的问题,建立一致的视觉层次和用户体验。
|
||||
|
||||
## 🎯 设计原则
|
||||
|
||||
1. **语义化命名** - 使用语义化的类名,如 `text-heading-lg` 而不是 `text-2xl`
|
||||
2. **响应式优先** - 所有字体规范都考虑了移动端适配
|
||||
3. **可访问性** - 确保足够的对比度和可读性
|
||||
4. **一致性** - 统一的行高、字重和字间距规范
|
||||
5. **中文优化** - 专门为中文内容优化的字体栈
|
||||
|
||||
## 📏 字体规范系统
|
||||
|
||||
### 🏆 显示级标题 (Display)
|
||||
用于首页主标题和重要页面的超大标题
|
||||
|
||||
```css
|
||||
.text-display-xl /* 56px - 首页主标题 */
|
||||
.text-display-lg /* 48px - 重要页面标题 */
|
||||
.text-display-md /* 40px - 次要页面标题 */
|
||||
```
|
||||
|
||||
**使用场景:**
|
||||
- 首页 Hero 区域主标题
|
||||
- 重要功能页面的主标题
|
||||
- 营销页面的大标题
|
||||
|
||||
### 📝 标题系列 (Heading)
|
||||
用于页面内容的层次化标题
|
||||
|
||||
```css
|
||||
.text-heading-xl /* 32px - H1 标题 */
|
||||
.text-heading-lg /* 28px - H2 标题 */
|
||||
.text-heading-md /* 24px - H3 标题 */
|
||||
.text-heading-sm /* 20px - H4 标题 */
|
||||
.text-heading-xs /* 18px - H5 标题 */
|
||||
```
|
||||
|
||||
**使用场景:**
|
||||
- 页面主标题 (H1)
|
||||
- 章节标题 (H2-H3)
|
||||
- 卡片标题 (H4-H5)
|
||||
- 组件内部标题
|
||||
|
||||
### 📄 正文系列 (Body)
|
||||
用于页面的主要内容文字
|
||||
|
||||
```css
|
||||
.text-body-xl /* 18px - 重要描述文字 */
|
||||
.text-body-lg /* 16px - 标准正文 (默认) */
|
||||
.text-body-md /* 14px - 次要正文 */
|
||||
.text-body-sm /* 12px - 辅助信息 */
|
||||
```
|
||||
|
||||
**使用场景:**
|
||||
- 重要的介绍文字 (body-xl)
|
||||
- 标准正文内容 (body-lg)
|
||||
- 卡片描述文字 (body-md)
|
||||
- 提示信息、时间戳 (body-sm)
|
||||
|
||||
### 🏷️ 标签系列 (Label)
|
||||
用于表单标签和小标签
|
||||
|
||||
```css
|
||||
.text-label-lg /* 14px - 表单标签 */
|
||||
.text-label-md /* 12px - 小标签 */
|
||||
.text-label-sm /* 11px - 微小标签 */
|
||||
```
|
||||
|
||||
**使用场景:**
|
||||
- 表单字段标签
|
||||
- 状态标签
|
||||
- 分类标签
|
||||
- 徽章文字
|
||||
|
||||
### 🔘 按钮系列 (Button)
|
||||
用于按钮内的文字
|
||||
|
||||
```css
|
||||
.text-button-lg /* 16px - 大按钮 */
|
||||
.text-button-md /* 14px - 标准按钮 */
|
||||
.text-button-sm /* 12px - 小按钮 */
|
||||
```
|
||||
|
||||
**使用场景:**
|
||||
- 主要操作按钮 (button-lg)
|
||||
- 标准按钮 (button-md)
|
||||
- 次要按钮和图标按钮 (button-sm)
|
||||
|
||||
## 🎨 字体族规范
|
||||
|
||||
### 中文字体栈
|
||||
```css
|
||||
.font-chinese
|
||||
/* 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', '微软雅黑', 'Noto Sans SC', 'STHeiti', 'WenQuanYi Micro Hei', sans-serif */
|
||||
```
|
||||
|
||||
### 中文衬线字体
|
||||
```css
|
||||
.font-chinese-serif
|
||||
/* 'Noto Serif SC', 'STSong', 'SimSun', '宋体', serif */
|
||||
```
|
||||
|
||||
### 英文字体
|
||||
```css
|
||||
.font-english
|
||||
/* 'Inter', 'Helvetica Neue', 'Arial', sans-serif */
|
||||
```
|
||||
|
||||
### 数字字体
|
||||
```css
|
||||
.font-numeric
|
||||
/* 确保数字对齐的等宽字体 */
|
||||
```
|
||||
|
||||
## 📱 响应式规范
|
||||
|
||||
所有字体规范都内置了响应式适配:
|
||||
|
||||
- **移动端 (≤768px)**: 字体大小适当缩小
|
||||
- **超小屏 (≤480px)**: 进一步优化字体大小
|
||||
- **桌面端 (>768px)**: 使用标准字体大小
|
||||
|
||||
## 🔧 使用方法
|
||||
|
||||
### 1. HTML 中使用
|
||||
```html
|
||||
<!-- 页面主标题 -->
|
||||
<h1 class="text-heading-xl font-chinese text-red-600">神机阁</h1>
|
||||
|
||||
<!-- 卡片标题 -->
|
||||
<h3 class="text-heading-sm font-chinese">八字命理</h3>
|
||||
|
||||
<!-- 正文内容 -->
|
||||
<p class="text-body-lg font-chinese">这是标准正文内容</p>
|
||||
|
||||
<!-- 按钮文字 -->
|
||||
<button class="text-button-md font-chinese">立即分析</button>
|
||||
```
|
||||
|
||||
### 2. React 组件中使用
|
||||
```jsx
|
||||
// 推荐:使用语义化类名
|
||||
<ChineseCardTitle className="text-heading-md font-chinese">
|
||||
十二宫位详解
|
||||
</ChineseCardTitle>
|
||||
|
||||
// 避免:使用数字类名
|
||||
<ChineseCardTitle className="text-xl">
|
||||
十二宫位详解
|
||||
</ChineseCardTitle>
|
||||
```
|
||||
|
||||
### 3. CSS 中使用
|
||||
```css
|
||||
/* 自定义组件样式 */
|
||||
.custom-title {
|
||||
@apply text-heading-lg font-chinese font-semibold;
|
||||
color: var(--cinnabar-500);
|
||||
}
|
||||
```
|
||||
|
||||
## 🎯 迁移指南
|
||||
|
||||
### 常见替换映射
|
||||
|
||||
| 旧类名 | 新类名 | 用途 |
|
||||
|--------|--------|------|
|
||||
| `text-3xl` | `text-display-md` | 页面主标题 |
|
||||
| `text-2xl` | `text-heading-xl` | 大标题 |
|
||||
| `text-xl` | `text-heading-lg` | 中标题 |
|
||||
| `text-lg` | `text-heading-md` | 小标题 |
|
||||
| `text-base` | `text-body-lg` | 标准正文 |
|
||||
| `text-sm` | `text-body-md` | 次要正文 |
|
||||
| `text-xs` | `text-body-sm` | 辅助信息 |
|
||||
|
||||
### 迁移步骤
|
||||
|
||||
1. **识别用途** - 确定文字的语义用途(标题、正文、标签等)
|
||||
2. **选择规范** - 根据用途选择对应的字体规范
|
||||
3. **添加字体族** - 确保添加 `font-chinese` 类
|
||||
4. **测试响应式** - 在不同设备上测试显示效果
|
||||
|
||||
## ✅ 最佳实践
|
||||
|
||||
### ✅ 推荐做法
|
||||
|
||||
```html
|
||||
<!-- 语义化命名 -->
|
||||
<h1 class="text-display-lg font-chinese">神机阁</h1>
|
||||
<h2 class="text-heading-xl font-chinese">命理分析</h2>
|
||||
<p class="text-body-lg font-chinese">专业的命理分析服务</p>
|
||||
<button class="text-button-md font-chinese">开始分析</button>
|
||||
|
||||
<!-- 数字内容使用数字字体 -->
|
||||
<span class="text-body-lg font-numeric">2024</span>
|
||||
|
||||
<!-- 特殊标题使用衬线字体 -->
|
||||
<h1 class="text-display-xl font-chinese-serif">神机阁</h1>
|
||||
```
|
||||
|
||||
### ❌ 避免做法
|
||||
|
||||
```html
|
||||
<!-- 避免:混用数字类名 -->
|
||||
<h1 class="text-4xl">标题</h1>
|
||||
<p class="text-lg">正文</p>
|
||||
|
||||
<!-- 避免:忘记添加字体族 -->
|
||||
<h1 class="text-heading-xl">标题</h1>
|
||||
|
||||
<!-- 避免:不合适的字体大小组合 -->
|
||||
<button class="text-xs">按钮</button> <!-- 太小 -->
|
||||
<p class="text-3xl">正文</p> <!-- 太大 -->
|
||||
```
|
||||
|
||||
## 🔍 常见问题
|
||||
|
||||
### Q: 什么时候使用 display 系列?
|
||||
A: 仅用于首页主标题和重要页面的超大标题,不要在普通内容中使用。
|
||||
|
||||
### Q: 如何选择合适的字体大小?
|
||||
A: 根据内容的重要性和层次选择:
|
||||
- 页面标题 → heading 系列
|
||||
- 正文内容 → body 系列
|
||||
- 表单标签 → label 系列
|
||||
- 按钮文字 → button 系列
|
||||
|
||||
### Q: 移动端需要特殊处理吗?
|
||||
A: 不需要,所有字体规范都内置了响应式适配。
|
||||
|
||||
### Q: 可以自定义字体大小吗?
|
||||
A: 不推荐。如果确实需要,请先考虑是否可以使用现有规范,或者提出新的规范需求。
|
||||
|
||||
## 📊 字体规范对照表
|
||||
|
||||
| 类名 | 桌面端 | 移动端 | 行高 | 字重 | 用途 |
|
||||
|------|--------|--------|------|------|------|
|
||||
| `text-display-xl` | 56px | 40px | 1.1 | 800 | 首页主标题 |
|
||||
| `text-display-lg` | 48px | 36px | 1.1 | 700 | 重要页面标题 |
|
||||
| `text-display-md` | 40px | 32px | 1.2 | 700 | 次要页面标题 |
|
||||
| `text-heading-xl` | 32px | 28px | 1.25 | 600 | H1 标题 |
|
||||
| `text-heading-lg` | 28px | 24px | 1.3 | 600 | H2 标题 |
|
||||
| `text-heading-md` | 24px | 20px | 1.35 | 600 | H3 标题 |
|
||||
| `text-heading-sm` | 20px | 18px | 1.4 | 600 | H4 标题 |
|
||||
| `text-heading-xs` | 18px | 16px | 1.4 | 600 | H5 标题 |
|
||||
| `text-body-xl` | 18px | 16px | 1.6 | 400 | 重要描述 |
|
||||
| `text-body-lg` | 16px | 16px | 1.6 | 400 | 标准正文 |
|
||||
| `text-body-md` | 14px | 14px | 1.6 | 400 | 次要正文 |
|
||||
| `text-body-sm` | 12px | 12px | 1.5 | 400 | 辅助信息 |
|
||||
| `text-label-lg` | 14px | 14px | 1.4 | 500 | 表单标签 |
|
||||
| `text-label-md` | 12px | 12px | 1.4 | 500 | 小标签 |
|
||||
| `text-label-sm` | 11px | 11px | 1.4 | 500 | 微小标签 |
|
||||
| `text-button-lg` | 16px | 16px | 1.4 | 600 | 大按钮 |
|
||||
| `text-button-md` | 14px | 14px | 1.4 | 600 | 标准按钮 |
|
||||
| `text-button-sm` | 12px | 12px | 1.4 | 600 | 小按钮 |
|
||||
|
||||
---
|
||||
|
||||
**更新日期**: 2024年12月
|
||||
**版本**: 1.0.0
|
||||
**维护者**: 神机阁开发团队
|
||||
208
docs/UI_OPTIMIZATION_PLAN.md
Normal file
208
docs/UI_OPTIMIZATION_PLAN.md
Normal file
@@ -0,0 +1,208 @@
|
||||
# 神机阁 UI 优化计划
|
||||
|
||||
## 🎯 优化目标
|
||||
|
||||
- 解决移动端顶部字体溢出问题
|
||||
- 建立统一的中式风格设计系统
|
||||
- 实现完美的桌面端与移动端自适应
|
||||
- 创造优雅古典的用户体验
|
||||
- 优化色彩搭配和视觉层次
|
||||
|
||||
## 📋 当前问题分析
|
||||
|
||||
### 1. 移动端问题
|
||||
- 顶部导航字体溢出
|
||||
- 布局在小屏幕上不合理
|
||||
- 触摸交互体验不佳
|
||||
|
||||
### 2. 整体设计问题
|
||||
- 字体大小不统一
|
||||
- 缺乏视觉层次
|
||||
- 色彩搭配不和谐
|
||||
- 缺乏中式设计元素的统一性
|
||||
|
||||
## 🎨 设计系统规划
|
||||
|
||||
### 1. 色彩系统 (中式古典配色)
|
||||
|
||||
#### 主色调
|
||||
- **朱砂红**: `#DC143C` - 主要强调色,用于重要按钮和标题
|
||||
- **金黄色**: `#FFD700` - 辅助色,用于装饰和高亮
|
||||
- **墨黑色**: `#2C2C2C` - 主要文字色
|
||||
- **古纸色**: `#F5F5DC` - 背景色
|
||||
- **青灰色**: `#708090` - 次要文字色
|
||||
|
||||
#### 渐变背景
|
||||
- **主背景**: 从古纸色到淡金色的渐变
|
||||
- **卡片背景**: 半透明白色覆盖
|
||||
- **按钮渐变**: 朱砂红到深红的渐变
|
||||
|
||||
### 2. 字体系统
|
||||
|
||||
#### 字体族
|
||||
```css
|
||||
/* 中文优先字体栈 */
|
||||
font-family: 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', '微软雅黑', 'STHeiti', 'WenQuanYi Micro Hei', sans-serif;
|
||||
```
|
||||
|
||||
#### 字体大小规范
|
||||
- **标题 H1**: 2.5rem (40px) / 移动端 2rem (32px)
|
||||
- **标题 H2**: 2rem (32px) / 移动端 1.75rem (28px)
|
||||
- **标题 H3**: 1.5rem (24px) / 移动端 1.25rem (20px)
|
||||
- **正文**: 1rem (16px) / 移动端 0.875rem (14px)
|
||||
- **小字**: 0.875rem (14px) / 移动端 0.75rem (12px)
|
||||
|
||||
#### 行高规范
|
||||
- **标题**: 1.2
|
||||
- **正文**: 1.6
|
||||
- **按钮文字**: 1.4
|
||||
|
||||
### 3. 间距系统
|
||||
|
||||
#### 基础间距单位 (基于 4px)
|
||||
- **xs**: 0.25rem (4px)
|
||||
- **sm**: 0.5rem (8px)
|
||||
- **md**: 1rem (16px)
|
||||
- **lg**: 1.5rem (24px)
|
||||
- **xl**: 2rem (32px)
|
||||
- **2xl**: 3rem (48px)
|
||||
|
||||
### 4. 组件设计规范
|
||||
|
||||
#### 按钮设计
|
||||
- **主按钮**: 朱砂红背景,金色边框,白色文字
|
||||
- **次按钮**: 透明背景,朱砂红边框,朱砂红文字
|
||||
- **圆角**: 8px
|
||||
- **高度**: 44px (移动端友好)
|
||||
- **内边距**: 16px 24px
|
||||
|
||||
#### 卡片设计
|
||||
- **背景**: 半透明白色 rgba(255,255,255,0.9)
|
||||
- **边框**: 1px solid rgba(220,20,60,0.2)
|
||||
- **圆角**: 12px
|
||||
- **阴影**: 0 4px 20px rgba(0,0,0,0.1)
|
||||
- **内边距**: 24px
|
||||
|
||||
#### 输入框设计
|
||||
- **背景**: 白色
|
||||
- **边框**: 1px solid #E5E5E5
|
||||
- **聚焦边框**: 2px solid #DC143C
|
||||
- **圆角**: 6px
|
||||
- **高度**: 44px
|
||||
- **内边距**: 12px 16px
|
||||
|
||||
## 📱 响应式设计策略
|
||||
|
||||
### 1. 断点设置
|
||||
```css
|
||||
/* 移动端 */
|
||||
@media (max-width: 768px) { ... }
|
||||
|
||||
/* 平板端 */
|
||||
@media (min-width: 769px) and (max-width: 1024px) { ... }
|
||||
|
||||
/* 桌面端 */
|
||||
@media (min-width: 1025px) { ... }
|
||||
```
|
||||
|
||||
### 2. 移动端优化
|
||||
- **导航栏**: 汉堡菜单,避免文字溢出
|
||||
- **字体缩放**: 移动端字体适当缩小
|
||||
- **触摸目标**: 最小 44px × 44px
|
||||
- **间距调整**: 移动端间距适当减小
|
||||
|
||||
### 3. 布局策略
|
||||
- **桌面端**: 多列布局,侧边栏导航
|
||||
- **移动端**: 单列布局,底部导航
|
||||
- **弹性布局**: 使用 Flexbox 和 Grid
|
||||
|
||||
## 🎭 中式设计元素
|
||||
|
||||
### 1. 装饰元素
|
||||
- **云纹图案**: 作为背景装饰
|
||||
- **回纹边框**: 用于卡片和分割线
|
||||
- **印章样式**: 用于重要标识
|
||||
- **书法笔触**: 用于标题装饰
|
||||
|
||||
### 2. 图标设计
|
||||
- **八卦图标**: 用于导航和功能区分
|
||||
- **中式符号**: 太极、阴阳、五行元素
|
||||
- **传统色彩**: 朱砂、金黄、墨色
|
||||
|
||||
### 3. 动画效果
|
||||
- **淡入淡出**: 页面切换动画
|
||||
- **缓动函数**: cubic-bezier(0.4, 0, 0.2, 1)
|
||||
- **悬停效果**: 轻微的缩放和阴影变化
|
||||
|
||||
## 🔧 技术实现方案
|
||||
|
||||
### 1. CSS 架构
|
||||
- **原子化 CSS**: 使用 Tailwind CSS
|
||||
- **自定义主题**: 扩展 Tailwind 配置
|
||||
- **组件样式**: CSS Modules 或 Styled Components
|
||||
|
||||
### 2. 响应式实现
|
||||
- **移动优先**: Mobile-first 设计
|
||||
- **弹性单位**: rem, em, vw, vh
|
||||
- **媒体查询**: 断点式响应
|
||||
|
||||
### 3. 性能优化
|
||||
- **字体优化**: 字体子集化,预加载
|
||||
- **图片优化**: WebP 格式,懒加载
|
||||
- **CSS 优化**: 关键 CSS 内联
|
||||
|
||||
## 📋 实施计划
|
||||
|
||||
### 阶段一:基础设施 (1-2天)
|
||||
1. 更新 Tailwind 配置,添加中式主题
|
||||
2. 创建设计系统组件库
|
||||
3. 建立响应式断点系统
|
||||
|
||||
### 阶段二:核心组件 (2-3天)
|
||||
1. 重构导航栏组件 (解决移动端溢出)
|
||||
2. 优化按钮和表单组件
|
||||
3. 重设计卡片和布局组件
|
||||
|
||||
### 阶段三:页面优化 (3-4天)
|
||||
1. 首页重新设计
|
||||
2. 分析页面布局优化
|
||||
3. 历史记录页面改进
|
||||
4. 用户中心页面美化
|
||||
|
||||
### 阶段四:细节完善 (1-2天)
|
||||
1. 动画效果添加
|
||||
2. 交互细节优化
|
||||
3. 跨设备测试
|
||||
4. 性能优化
|
||||
|
||||
## 🎯 预期效果
|
||||
|
||||
### 视觉效果
|
||||
- 统一的中式古典风格
|
||||
- 和谐的色彩搭配
|
||||
- 清晰的视觉层次
|
||||
- 优雅的动画过渡
|
||||
|
||||
### 用户体验
|
||||
- 完美的移动端适配
|
||||
- 直观的导航体验
|
||||
- 舒适的阅读体验
|
||||
- 流畅的交互反馈
|
||||
|
||||
### 技术指标
|
||||
- 移动端适配率 100%
|
||||
- 页面加载速度 < 2s
|
||||
- 交互响应时间 < 100ms
|
||||
- 跨浏览器兼容性 95%+
|
||||
|
||||
## 📝 验收标准
|
||||
|
||||
1. **移动端测试**: 在各种移动设备上无溢出、布局正常
|
||||
2. **响应式测试**: 在不同屏幕尺寸下表现良好
|
||||
3. **视觉一致性**: 所有页面遵循统一设计规范
|
||||
4. **性能测试**: 页面加载和交互性能达标
|
||||
5. **用户体验**: 导航清晰、操作便捷、视觉舒适
|
||||
|
||||
---
|
||||
|
||||
*此计划将分阶段实施,每个阶段完成后进行测试和调整,确保最终效果符合预期。*
|
||||
Reference in New Issue
Block a user