# GameGroup UI/UX 设计规范 **项目名称**: GameGroup 前端系统 **文档版本**: v1.0 **更新时间**: 2026-01-28 --- ## 📋 目录 - [1. 设计理念](#1-设计理念) - [2. 视觉风格](#2-视觉风格) - [3. 色彩系统](#3-色彩系统) - [4. 字体系统](#4-字体系统) - [5. 间距系统](#5-间距系统) - [6. 组件规范](#6-组件规范) - [7. 动效规范](#7-动效规范) - [8. 响应式设计](#8-响应式设计) - [9. 无障碍设计](#9-无障碍设计) - [10. 设计资源](#10-设计资源) --- ## 1. 设计理念 ### 1.1 核心价值 **活力与专业并重** - GameGroup作为游戏社群平台,既要体现游戏的活力与趣味性,又要保持管理工具的专业性与可靠性 - 设计风格融合游戏化元素与现代UI设计,创造独特的视觉语言 **用户为中心** - 简洁直观的操作流程 - 清晰的信息层级 - 即时的反馈机制 - 一致的交互体验 **性能优先** - 快速加载 - 流畅动画 - 高效交互 ### 1.2 设计关键词 - **活力**: 充满动感,富有生命力 - **简洁**: 去除冗余,聚焦核心 - **直观**: 一目了然,易于理解 - **有趣**: 愉悦体验,富有惊喜 --- ## 2. 视觉风格 ### 2.1 风格定位 **游戏化现代风格** 融合以下设计元素: - **游戏UI影响**: 动态卡片、徽章系统、进度条、成就展示 - **现代扁平化**: 清晰的视觉层次,适度的阴影和渐变 - **微交互动画**: 悬停效果、过渡动画、状态反馈 - **高对比度**: 确保可读性和视觉冲击力 ### 2.2 设计原则 #### 层次分明 - 使用卡片容器分割内容 - 利用阴影和z轴创建深度 - 明确的视觉层级引导 #### 留白充足 - 组件之间保持合理间距 - 避免信息过载 - 提升阅读舒适度 #### 一致性 - 统一的视觉语言 - 可预测的交互模式 - 规范的设计系统 --- ## 3. 色彩系统 ### 3.1 主色调 (Primary Colors) ```css /* 主色 - 游戏紫 */ --color-primary-50: #f5f3ff; --color-primary-100: #ede9fe; --color-primary-200: #ddd6fe; --color-primary-300: #c4b5fd; --color-primary-400: #a78bfa; --color-primary-500: #8b5cf6; /* 主色 */ --color-primary-600: #7c3aed; --color-primary-700: #6d28d9; --color-primary-800: #5b21b6; --color-primary-900: #4c1d95; /* 强调色 - 活力橙 */ --color-accent-50: #fff7ed; --color-accent-100: #ffedd5; --color-accent-200: #fed7aa; --color-accent-300: #fdba74; --color-accent-400: #fb923c; --color-accent-500: #f97316; /* 强调色 */ --color-accent-600: #ea580c; --color-accent-700: #c2410c; --color-accent-800: #9a3412; --color-accent-900: #7c2d12; ``` ### 3.2 中性色 (Neutral Colors) ```css /* 深色模式 */ --color-gray-50: #f9fafb; --color-gray-100: #f3f4f6; --color-gray-200: #e5e7eb; --color-gray-300: #d1d5db; --color-gray-400: #9ca3af; --color-gray-500: #6b7280; --color-gray-600: #4b5563; --color-gray-700: #374151; --color-gray-800: #1f2937; --color-gray-900: #111827; /* 浅色模式 */ --color-text-primary: #1f2937; --color-text-secondary: #6b7280; --color-text-tertiary: #9ca3af; --color-bg-primary: #ffffff; --color-bg-secondary: #f9fafb; --color-bg-tertiary: #f3f4f6; --color-border: #e5e7eb; ``` ### 3.3 功能色 (Semantic Colors) ```css /* 成功 - 绿色 */ --color-success-50: #f0fdf4; --color-success-100: #dcfce7; --color-success-500: #22c55e; --color-success-700: #15803d; /* 警告 - 黄色 */ --color-warning-50: #fffbeb; --color-warning-100: #fef3c7; --color-warning-500: #eab308; --color-warning-700: #a16207; /* 错误 - 红色 */ --color-error-50: #fef2f2; --color-error-100: #fee2e2; --color-error-500: #ef4444; --color-error-700: #b91c1c; /* 信息 - 蓝色 */ --color-info-50: #eff6ff; --color-info-100: #dbeafe; --color-info-500: #3b82f6; --color-info-700: #1d4ed8; ``` ### 3.4 游戏主题色 用于游戏相关的特殊标识和游戏化元素: ```css /* 游戏类型颜色 */ --game-moba: #8b5cf6; /* MOBA - 紫色 */ --game-fps: #ef4444; /* FPS - 红色 */ --game-rpg: #22c55e; /* RPG - 绿色 */ --game-strategy: #3b82f6; /* 策略 - 蓝色 */ --game-racing: #f97316; /* 竞速 - 橙色 */ --game-sports: #eab308; /* 体育 - 黄色 */ --game-card: #ec4899; /* 卡牌 - 粉色 */ --game-puzzle: #06b6d4; /* 益智 - 青色 */ ``` ### 3.5 使用规范 #### 色彩搭配原则 - **主色占比**: 60% - 用于主要操作、品牌标识 - **中性色占比**: 30% - 用于背景、文本 - **强调色占比**: 10% - 用于重点突出、引导注意 #### 对比度要求 - 文本与背景对比度 ≥ 4.5:1 (WCAG AA标准) - 重要元素对比度 ≥ 7:1 (WCAG AAA标准) --- ## 4. 字体系统 ### 4.1 字体家族 ```css /* 主字体 - 思源黑体 (中文) + Inter (英文/数字) */ --font-family-base: "Source Han Sans CN", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif; /* 代码字体 */ --font-family-mono: "JetBrains Mono", "Fira Code", "Courier New", monospace; /* 数字字体 - 用于数据显示 */ --font-family-number: "Inter", "Roboto Mono", monospace; ``` ### 4.2 字体大小 ```css /* 标题 */ --font-size-h1: 2.5rem; /* 40px */ --font-size-h2: 2rem; /* 32px */ --font-size-h3: 1.5rem; /* 24px */ --font-size-h4: 1.25rem; /* 20px */ --font-size-h5: 1.125rem; /* 18px */ --font-size-h6: 1rem; /* 16px */ /* 正文 */ --font-size-large: 1rem; /* 16px */ --font-size-base: 0.875rem; /* 14px */ --font-size-small: 0.75rem; /* 12px */ --font-size-xs: 0.625rem; /* 10px */ ``` ### 4.3 字重 ```css --font-weight-light: 300; --font-weight-normal: 400; --font-weight-medium: 500; --font-weight-semibold: 600; --font-weight-bold: 700; ``` ### 4.4 行高 ```css --line-height-tight: 1.25; --line-height-normal: 1.5; --line-height-relaxed: 1.75; ``` ### 4.5 使用规范 | 元素 | 字体大小 | 字重 | 行高 | |------|---------|------|------| | 页面标题 | H1 (40px) | Bold (700) | 1.25 | | 区块标题 | H2 (32px) | Semibold (600) | 1.25 | | 卡片标题 | H4 (20px) | Semibold (600) | 1.5 | | 正文内容 | Base (14px) | Normal (400) | 1.5 | | 辅助文字 | Small (12px) | Normal (400) | 1.5 | --- ## 5. 间距系统 ### 5.1 间距尺度 采用4px基准的间距系统: ```css --spacing-0: 0; --spacing-1: 0.25rem; /* 4px */ --spacing-2: 0.5rem; /* 8px */ --spacing-3: 0.75rem; /* 12px */ --spacing-4: 1rem; /* 16px */ --spacing-5: 1.25rem; /* 20px */ --spacing-6: 1.5rem; /* 24px */ --spacing-8: 2rem; /* 32px */ --spacing-10: 2.5rem; /* 40px */ --spacing-12: 3rem; /* 48px */ --spacing-16: 4rem; /* 64px */ --spacing-20: 5rem; /* 80px */ ``` ### 5.2 使用场景 | 场景 | 间距值 | 用途 | |------|--------|------| | 组件内边距 | spacing-4 (16px) | 按钮内边距、卡片内边距 | | 组件间距 | spacing-6 (24px) | 卡片之间的间距 | | 区块间距 | spacing-8 (32px) | 页面区块之间的间距 | | 页面边距 | spacing-6 (24px) | 内容与页面边缘的间距 | | 紧凑间距 | spacing-2 (8px) | 标签、徽章等小元素 | --- ## 6. 组件规范 ### 6.1 按钮 (Button) #### 主要按钮 (Primary) ```css /* 样式 */ background: var(--color-primary-500); color: white; border-radius: 8px; padding: 10px 20px; font-weight: 600; transition: all 0.2s; /* 悬停 */ background: var(--color-primary-600); transform: translateY(-1px); box-shadow: 0 4px 12px rgba(139, 92, 246, 0.3); /* 点击 */ transform: translateY(0); ``` #### 次要按钮 (Secondary) ```css background: transparent; color: var(--color-primary-500); border: 2px solid var(--color-primary-500); border-radius: 8px; padding: 10px 20px; font-weight: 600; ``` #### 文字按钮 (Text) ```css background: transparent; color: var(--color-primary-500); padding: 8px 12px; font-weight: 500; /* 悬停 */ background: var(--color-primary-50); ``` #### 尺寸规范 - **Large**: 48px高度, 16px字体 - **Medium**: 40px高度, 14px字体 (默认) - **Small**: 32px高度, 12px字体 ### 6.2 卡片 (Card) ```css /* 基础卡片 */ background: var(--color-bg-primary); border-radius: 12px; padding: var(--spacing-6); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); transition: all 0.3s; /* 悬停效果 */ box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1); transform: translateY(-2px); ``` #### 卡片类型 - **基础卡片**: 标准卡片样式 - **可点击卡片**: 带悬停效果 - **游戏卡片**: 带封面图和标签 ### 6.3 输入框 (Input) ```css /* 样式 */ border: 2px solid var(--color-border); border-radius: 8px; padding: 10px 14px; font-size: 14px; transition: all 0.2s; /* 聚焦状态 */ border-color: var(--color-primary-500); box-shadow: 0 0 0 3px rgba(139, 92, 246, 0.1); outline: none; /* 错误状态 */ border-color: var(--color-error-500); ``` ### 6.4 徽章 (Badge) ```css /* 基础样式 */ display: inline-flex; align-items: center; padding: 4px 10px; border-radius: 9999px; font-size: 12px; font-weight: 600; /* 类型 */ .badge-primary { background: var(--color-primary-100); color: var(--color-primary-700); } .badge-success { background: var(--color-success-100); color: var(--color-success-700); } .badge-warning { background: var(--color-warning-100); color: var(--color-warning-700); } .badge-error { background: var(--color-error-100); color: var(--color-error-700); } ``` ### 6.5 头像 (Avatar) ```css /* 尺寸 */ .avatar-xs { width: 24px; height: 24px; } .avatar-sm { width: 32px; height: 32px; } .avatar-md { width: 40px; height: 40px; } .avatar-lg { width: 56px; height: 56px; } .avatar-xl { width: 80px; height: 80px; } /* 样式 */ border-radius: 50%; object-fit: cover; border: 2px solid var(--color-border); ``` ### 6.6 进度条 (Progress) ```css /* 容器 */ height: 8px; background: var(--color-bg-tertiary); border-radius: 9999px; overflow: hidden; /* 进度 */ height: 100%; background: linear-gradient(90deg, var(--color-primary-400), var(--color-primary-600)); border-radius: 9999px; transition: width 0.3s; ``` ### 6.7 标签 (Tag) 用于游戏标签、技能标签等: ```css /* 样式 */ display: inline-flex; align-items: center; padding: 6px 12px; border-radius: 6px; font-size: 12px; font-weight: 500; background: var(--color-bg-tertiary); color: var(--color-text-secondary); gap: 4px; /* 游戏类型标签 - 不同颜色 */ .tag-moba { background: var(--game-moba); color: white; } .tag-fps { background: var(--game-fps); color: white; } ``` --- ## 7. 动效规范 ### 7.1 动画时长 ```css --duration-fast: 150ms; --duration-base: 200ms; --duration-slow: 300ms; --duration-slower: 500ms; ``` ### 7.2 缓动函数 ```css /* 标准 */ --ease-default: cubic-bezier(0.4, 0, 0.2, 1); /* 进入 */ --ease-in: cubic-bezier(0.4, 0, 1, 1); /* 离开 */ --ease-out: cubic-bezier(0, 0, 0.2, 1); /* 弹性 */ --ease-elastic: cubic-bezier(0.68, -0.55, 0.265, 1.55); ``` ### 7.3 常用动效 #### 淡入淡出 (Fade) ```css @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes fadeOut { from { opacity: 1; } to { opacity: 0; } } ``` #### 滑动 (Slide) ```css @keyframes slideInUp { from { transform: translateY(20px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } ``` #### 缩放 (Scale) ```css @keyframes scaleIn { from { transform: scale(0.95); opacity: 0; } to { transform: scale(1); opacity: 1; } } ``` #### 骨架屏加载 (Skeleton) ```css @keyframes skeleton-loading { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } .skeleton { background: linear-gradient( 90deg, var(--color-bg-tertiary) 25%, var(--color-bg-secondary) 50%, var(--color-bg-tertiary) 75% ); background-size: 200% 100%; animation: skeleton-loading 1.5s infinite; } ``` ### 7.4 微交互 #### 按钮点击 ```css button:active { transform: scale(0.98); } ``` #### 卡片悬停 ```css .card:hover { transform: translateY(-4px); box-shadow: 0 12px 24px rgba(0, 0, 0, 0.15); } ``` #### 链接下划线动画 ```css .link { position: relative; } .link::after { content: ''; position: absolute; bottom: 0; left: 0; width: 0; height: 2px; background: var(--color-primary-500); transition: width var(--duration-base); } .link:hover::after { width: 100%; } ``` --- ## 8. 响应式设计 ### 8.1 断点系统 ```css /* 断点 */ --breakpoint-xs: 0px; /* 手机竖屏 */ --breakpoint-sm: 640px; /* 手机横屏 */ --breakpoint-md: 768px; /* 平板竖屏 */ --breakpoint-lg: 1024px; /* 平板横屏 / 小笔记本 */ --breakpoint-xl: 1280px; /* 桌面 */ --breakpoint-2xl: 1536px; /* 大屏幕 */ ``` ### 8.2 响应式策略 #### 移动优先 从最小屏幕开始设计,逐步增强: ```css /* 移动端 (默认) */ .container { padding: 16px; } /* 平板及以上 */ @media (min-width: 768px) { .container { padding: 24px; } } /* 桌面 */ @media (min-width: 1024px) { .container { padding: 32px; max-width: 1200px; margin: 0 auto; } } ``` #### 隐藏元素 ```css /* 移动端隐藏 */ .hidden-mobile { display: none; } @media (min-width: 768px) { .hidden-mobile { display: block; } } /* 桌面端隐藏 */ .hidden-desktop { display: block; } @media (min-width: 1024px) { .hidden-desktop { display: none; } } ``` ### 8.3 布局适配 #### 导航栏 - **移动端**: 底部导航栏或汉堡菜单 - **平板**: 侧边栏 - **桌面**: 顶部导航 + 侧边栏 #### 网格系统 ```css /* 移动: 1列 */ .grid { display: grid; grid-template-columns: 1fr; gap: 16px; } /* 平板: 2列 */ @media (min-width: 768px) { .grid { grid-template-columns: repeat(2, 1fr); } } /* 桌面: 3-4列 */ @media (min-width: 1024px) { .grid { grid-template-columns: repeat(4, 1fr); } } ``` --- ## 9. 无障碍设计 ### 9.1 键盘导航 - **Tab顺序**: 逻辑清晰的焦点顺序 - **焦点可见**: 明确的焦点样式 - **快捷键**: 支持常用操作快捷键 ```css /* 焦点样式 */ *:focus-visible { outline: 2px solid var(--color-primary-500); outline-offset: 2px; } ``` ### 9.2 屏幕阅读器 ```html ``` ### 9.3 色盲友好 不仅依赖颜色传达信息: - 使用图标 + 颜色 - 添加文字说明 - 提供高对比度模式 --- ## 10. 设计资源 ### 10.1 设计工具 - **Figma**: 主要设计工具 - **Iconify**: 图标库 - **Coolors**: 配色方案生成 - **Type Scale**: 字体比例计算 ### 10.2 图标系统 推荐使用以下图标库: - **Heroicons**: 简洁现代 - **Lucide Icons**: 统一风格 - **Phosphor Icons**: 丰富选择 图标尺寸: - **XS**: 16px - **SM**: 20px - **MD**: 24px (默认) - **LG**: 32px - **XL**: 48px ### 10.3 图片规范 #### 头像 - **尺寸**: 200x200px最小 - **格式**: JPG/WebP - **质量**: 80%以上 #### 游戏封面 - **尺寸**: 16:9比例 - **最小宽度**: 640px - **格式**: WebP优先 #### 截图 - **尺寸**: 原始分辨率 - **格式**: WebP/PNG - **压缩**: 无损或有损80% --- ## 11. 组件示例 ### 11.1 用户卡片 ```vue ``` ### 11.2 游戏卡片 ```vue ``` --- ## 12. 总结 本设计规范确保: - ✅ **视觉一致性**: 统一的设计语言 - ✅ **开发效率**: 规范化的组件库 - ✅ **用户体验**: 直观友好的交互 - ✅ **品牌识别**: 独特的视觉风格 - ✅ **可维护性**: 系统化的设计系统 --- **文档维护**: 随产品迭代持续更新 **最后更新**: 2026-01-28 **设计负责**: Frontend Team