# 🎨 Web端設計系統指南 ## 📋 文檔概述 **文檔名稱**: Drama Ling Web端設計系統指南 **建立日期**: 2025-09-12 **目標受眾**: UI/UX設計師、前端工程師、產品經理 **基礎依據**: `design-system.css` + Web端特化需求 ## 🎯 設計哲學 ### 🌟 **Web端設計核心** - **效率優先**: 利用桌面環境的高效操作體驗 - **資訊豐富**: 大螢幕空間的充分利用 - **多任務友好**: 支援並行學習和操作 - **專業感**: 適合辦公室和學習環境的專業設計 ### 🔄 **平台一致性原則** - **業務邏輯統一**: 與Mobile端保持相同的學習流程 - **視覺語言延續**: 繼承品牌色彩和基礎設計元素 - **交互模式適配**: 針對Web環境優化交互方式 ## 🎨 視覺設計標準 ### 🌈 **色彩系統** (基於 design-system.css) #### 主要色彩應用 ```css /* Web端色彩應用重點 */ :root { /* 主要品牌色 - Web端應用 */ --primary-teal: #00E5CC; /* 主要按鈕、連結、進度條 */ --primary-teal-light: #33E8D1; /* 懸停狀態、高亮顯示 */ --primary-teal-dark: #00B3A0; /* 按下狀態、深色強調 */ /* 功能色 - Web端強化 */ --success-green: #4CAF50; /* 完成狀態、成功回饋 */ --warning-yellow: #F39C12; /* 注意提示、待完成 */ --error-red: #E74C3C; /* 錯誤狀態、警告資訊 */ --info-cyan: #3498DB; /* 資訊提示、幫助內容 */ } ``` #### Web端特殊色彩 ```css /* Web端專用色彩 */ :root { --web-accent-blue: #2196F3; /* Web端連結色 */ --web-hover-bg: rgba(0,229,204,0.08); /* 懸停背景 */ --web-focus-ring: rgba(0,229,204,0.4); /* 聚焦框 */ --web-border-subtle: #E1E8ED; /* 細線邊框 */ } ``` ### 📐 **佈局系統** #### 網格系統 ```css /* Web端網格佈局 */ .web-container { max-width: 1400px; margin: 0 auto; padding: 0 var(--space-6); } .web-grid { display: grid; gap: var(--space-6); } /* 常用網格模板 */ .web-grid-main { grid-template-columns: 280px 1fr 320px; /* 側欄+主內容+工具欄 */ } .web-grid-content { grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); } .web-grid-cards { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); } ``` #### 間距系統 ```css /* Web端間距指南 */ .web-spacing { --space-section: var(--space-12); /* 大區塊間距 48px */ --space-group: var(--space-8); /* 組件群組間距 32px */ --space-item: var(--space-4); /* 項目間距 16px */ --space-inline: var(--space-2); /* 行內元素間距 8px */ } ``` ### 🔤 **字體系統** #### Web端字體層級 ```css /* Web端字體應用 */ .web-typography { /* 標題層級 */ --text-hero: clamp(40px, 5vw, 56px); /* 主標題 */ --text-h1: clamp(32px, 4vw, 42px); /* 頁面標題 */ --text-h2: clamp(24px, 3vw, 32px); /* 區塊標題 */ --text-h3: clamp(20px, 2.5vw, 24px); /* 小節標題 */ /* 內容字體 */ --text-body-lg: 18px; /* 重要內容 */ --text-body: 16px; /* 一般內容 */ --text-body-sm: 14px; /* 輔助資訊 */ --text-caption: 12px; /* 說明文字 */ } ``` #### 字體應用規範 ```css /* 字體使用情境 */ .web-text-primary { font-size: var(--text-body); line-height: 1.6; color: var(--text-primary); } .web-text-heading { font-weight: 700; line-height: 1.2; margin-bottom: var(--space-4); } .web-text-label { font-size: var(--text-body-sm); font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; } ``` ## 🧩 組件設計規範 ### 🔘 **按鈕系統** #### 按鈕層級 ```html ``` #### Web端按鈕增強 ```css .web-btn { /* 基礎樣式繼承 design-system.css */ position: relative; overflow: visible; /* 允許快捷鍵提示 */ } .web-btn:hover .btn-shortcut { opacity: 1; transform: translateY(0); } .btn-shortcut { position: absolute; top: -30px; right: 0; background: var(--background-dark); color: white; padding: 2px 6px; border-radius: 4px; font-size: 11px; opacity: 0; transform: translateY(5px); transition: all 0.2s ease; } ``` ### 📝 **輸入框系統** #### 智能輸入框 ```html
That sounds great!
I'd love to try that.
``` ### 📊 **卡片系統** #### 學習卡片設計 ```html
進行中 3/5

詞彙學習 - Level 1

買菜小冒險

market vegetables price
``` ## 🎮 交互設計規範 ### 🖱️ **懸停與點擊** #### 懸停狀態 ```css /* Web端懸停效果指南 */ .web-interactive { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .web-interactive:hover { transform: translateY(-2px); box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15); } /* 卡片懸停 */ .web-card:hover { border-color: var(--primary-teal); box-shadow: 0 12px 40px rgba(0, 229, 204, 0.15); } /* 按鈕懸停 */ .web-btn:hover { filter: brightness(1.1); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); } ``` #### 聚焦狀態 ```css /* 鍵盤導航聚焦 */ .web-focusable:focus { outline: none; box-shadow: 0 0 0 3px var(--web-focus-ring); border-color: var(--primary-teal); } /* 聚焦指示器 */ .focus-indicator::after { content: ''; position: absolute; inset: -2px; border: 2px solid var(--primary-teal); border-radius: inherit; opacity: 0; transition: opacity 0.2s; } .focus-indicator:focus::after { opacity: 1; } ``` ### ⌨️ **快捷鍵設計** #### 快捷鍵視覺提示 ```html

鍵盤快捷鍵

Ctrl + 1 切換到詞彙學習
Space 播放音頻
Enter 確認答案
``` #### 快捷鍵樣式 ```css kbd { display: inline-block; padding: 2px 6px; background: var(--background-secondary); border: 1px solid var(--border-light); border-radius: 4px; font-family: 'SF Mono', Monaco, monospace; font-size: 12px; font-weight: 600; color: var(--text-primary); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); } ``` ## 📱 響應式設計原則 ### 🖥️ **斷點系統** ```css /* Web端響應式斷點 */ :root { --breakpoint-desktop: 1200px; /* 桌面主要設計 */ --breakpoint-laptop: 992px; /* 筆電適配 */ --breakpoint-tablet: 768px; /* 平板適配 */ --breakpoint-mobile: 480px; /* 手機兼容 */ } ``` ### 📐 **適配策略** #### 桌面版 (1200px+) - **三欄佈局**: 充分利用寬螢幕 - **豐富交互**: 懸停效果、工具提示 - **詳細資訊**: 統計圖表、進度視覺化 #### 筆電版 (992px-1199px) - **兩欄佈局**: 可摺疊側邊欄 - **簡化工具欄**: 整合功能按鈕 - **保持核心**: 維持主要功能 #### 平板版 (768px-991px) - **單欄佈局**: 垂直排列內容 - **觸控優化**: 增大可點擊區域 - **簡化導航**: Tab式底部導航 ## 🔧 設計實作指南 ### 📏 **設計稿規範** #### 畫板尺寸 - **桌面設計**: 1440px × 900px - **筆電設計**: 1024px × 768px - **平板設計**: 768px × 1024px #### 組件設計 - **8px網格系統**: 所有尺寸基於8的倍數 - **最小點擊區域**: 44px × 44px - **文字對比度**: 至少4.5:1 (WCAG AA標準) ### 🎨 **設計工具設定** #### Figma設定 ```javascript // Figma變數設定 const WebDesignTokens = { colors: { primary: '#00E5CC', primaryLight: '#33E8D1', primaryDark: '#00B3A0' }, spacing: { xs: '4px', sm: '8px', md: '16px', lg: '24px', xl: '32px', xxl: '48px' }, typography: { fontFamily: 'Inter, system-ui', fontSize: { sm: '14px', base: '16px', lg: '18px', xl: '24px', xxl: '32px' } } } ``` ### 🔄 **設計工作流程** #### 1️⃣ **需求分析** - 確認功能需求和業務目標 - 參考Mobile版設計保持一致性 - 識別Web端特有需求 #### 2️⃣ **原型設計** - 創建低保真度線框圖 - 確定資訊架構和佈局 - 驗證用戶流程的可行性 #### 3️⃣ **視覺設計** - 應用設計系統規範 - 創建高保真度視覺稿 - 標註交互狀態和動畫 #### 4️⃣ **開發協作** - 提供完整的設計規格 - 與前端工程師協作實作 - 進行設計走查和調優 ## 📊 設計檢查清單 ### ✅ **視覺一致性** - [ ] 色彩使用符合設計系統 - [ ] 字體層級和間距正確 - [ ] 組件樣式保持統一 - [ ] 圖示和插圖風格一致 ### ✅ **交互體驗** - [ ] 懸停狀態清楚可見 - [ ] 聚焦狀態符合無障礙標準 - [ ] 載入狀態有適當回饋 - [ ] 錯誤狀態有清楚提示 ### ✅ **響應式適配** - [ ] 桌面版充分利用螢幕空間 - [ ] 筆電版保持核心功能 - [ ] 平板版觸控操作友好 - [ ] 手機版提供基本功能 ### ✅ **無障礙設計** - [ ] 色彩對比度符合WCAG標準 - [ ] 支援鍵盤導航 - [ ] 提供適當的語義標記 - [ ] 具備螢幕閱讀器支援 --- **設計系統更新**: 當 `design-system.css` 更新時,請同步更新此設計指南。 **最後更新**: 2025-09-12 **版本**: v1.0 **維護者**: Drama Ling 設計團隊