一個成功的網站或應用程式,除了功能正確之外,使用者介面(UI)和使用者體驗(UX)同樣至關重要。本文將詳細解析 UI/UX 審計中的各個檢查項目,幫助你打造專業級的介面設計。
什麼是 UI/UX Review?
UI/UX Review 是一套系統化的介面審計流程,用於評估:
- UI(User Interface):視覺設計、排版、色彩、圖示等視覺元素
- UX(User Experience):互動流程、易用性、可訪問性等使用者體驗
透過定期審計,可以確保介面不只是「能用」,更是「好用」和「好看」。
一、圖示與視覺元素(Icons & Visual Elements)
1. 避免使用 Emoji 作為 UI 圖示
| 項目 | 說明 |
|---|
| 檢查內容 | 是否使用 Emoji 符號(如 🎨 🚀 ⚙️)作為功能性圖示 |
| 目的 | 確保介面的專業性和一致性 |
為什麼不該用 Emoji?
❌ 問題:
- 不同作業系統顯示不同
- 無法自訂顏色和大小
- 缺乏專業感
- 載入時可能出現方塊
✅ 解決方案:
- 使用 SVG 圖示庫(Heroicons、Lucide、Feather Icons)
- 使用 Icon Font(Font Awesome)
- 自訂 SVG 圖示
推薦圖示庫
2. 圖示一致性
| 項目 | 說明 |
|---|
| 檢查內容 | 所有圖示是否來自同一套圖示庫 |
| 目的 | 維持視覺一致性 |
❌ 不好的做法:
- 混用 Heroicons 和 Font Awesome
- 混用填充和線條風格
- 圖示尺寸不一致
✅ 好的做法:
- 統一使用一套圖示庫
- 統一使用 outline 或 solid 風格
- 統一尺寸(如都用 24×24)
3. 品牌 Logo 正確性
| 項目 | 說明 |
|---|
| 檢查內容 | 第三方品牌 Logo 是否正確、官方 |
| 目的 | 避免侵權和視覺錯誤 |
最佳實踐:
二、互動與游標狀態(Interaction & Cursor)
1. 游標指標(Cursor Pointer)
| 項目 | 說明 |
|---|
| 檢查內容 | 可點擊元素是否顯示手指游標 |
| 目的 | 明確告知使用者該元素可互動 |
/* 所有可點擊元素應該有 cursor: pointer */
button, a, [role="button"], .clickable {
cursor: pointer;
}
常見遺漏情境:
- 點擊式卡片
- 自訂的可點擊區塊
- 帶有 onClick 的非 button 元素
2. 懸停回饋(Hover Feedback)
| 項目 | 說明 |
|---|
| 檢查內容 | 互動元素是否有明顯的懸停效果 |
| 目的 | 提供視覺回饋,確認元素可互動 |
/* 建議的懸停效果 */
.card:hover {
border-color: rgba(0, 255, 136, 0.5);
/* 或 */
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
/* 或 */
background-color: rgba(255, 255, 255, 0.05);
}
有效的懸停效果類型:
- 顏色變化(背景、邊框、文字)
- 陰影變化
- 透明度變化
- 底線出現(連結)
3. 平滑過渡動畫
| 項目 | 說明 |
|---|
| 檢查內容 | 狀態變化是否有平滑過渡 |
| 目的 | 提升視覺品質,避免突兀的變化 |
/* 建議的過渡時間 */
.element {
transition: all 150ms ease; /* 快速反應 */
/* 或 */
transition: all 200ms ease; /* 標準 */
/* 或 */
transition: all 300ms ease; /* 較慢,用於強調 */
}
/* 避免太慢(>500ms)會讓使用者感覺遲鈍 */
4. 穩定的懸停狀態
| 項目 | 說明 |
|---|
| 檢查內容 | 懸停時是否會導致版面位移 |
| 目的 | 避免惱人的跳動效果 |
/* ❌ 會導致版面位移 */
.card:hover {
transform: scale(1.05);
margin: 10px;
}
/* ✅ 不會導致版面位移 */
.card:hover {
transform: translateY(-2px); /* 使用 translate 而非 margin */
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
三、明暗模式對比(Light/Dark Mode Contrast)
1. 深色模式文字對比
| 項目 | 說明 |
|---|
| 檢查內容 | 深色背景上的文字是否清晰可讀 |
| 目的 | 確保 4.5:1 以上的對比度 |
/* 深色模式建議配色 */
.dark {
--bg: #0a0a0a;
--text: #e5e5e5; /* 主要文字 */
--text-muted: #a1a1aa; /* 次要文字 */
--border: rgba(255, 255, 255, 0.1);
}
2. 淺色模式文字對比
| 項目 | 說明 |
|---|
| 檢查內容 | 淺色背景上的文字是否清晰可讀 |
| 目的 | 確保足夠的對比度 |
/* 淺色模式建議配色 */
.light {
--bg: #ffffff;
--text: #0f172a; /* slate-900,不要用 gray-400 */
--text-muted: #475569; /* slate-600,最低限度 */
--border: #e2e8f0;
}
3. 玻璃效果在淺色模式的可見性
| 項目 | 說明 |
|---|
| 檢查內容 | 半透明元素在淺色模式下是否可見 |
| 目的 | 確保 Glassmorphism 效果在雙模式下都正常 |
/* ❌ 淺色模式下幾乎看不見 */
.glass {
background: rgba(255, 255, 255, 0.1);
}
/* ✅ 雙模式都可見 */
.glass {
background: rgba(255, 255, 255, 0.8); /* 淺色模式 */
}
.dark .glass {
background: rgba(255, 255, 255, 0.1); /* 深色模式 */
}
4. 邊框可見性
| 項目 | 說明 |
|---|
| 檢查內容 | 邊框在不同模式下是否都可見 |
| 目的 | 維持視覺結構 |
/* 確保邊框在雙模式下都可見 */
.border-adaptive {
border-color: #e2e8f0; /* 淺色模式 */
}
.dark .border-adaptive {
border-color: rgba(255, 255, 255, 0.1); /* 深色模式 */
}
四、排版與間距(Layout & Spacing)
1. 浮動元素間距
| 項目 | 說明 |
|---|
| 檢查內容 | 固定導覽列是否與邊緣有適當間距 |
| 目的 | 提升視覺品質和現代感 |
/* ❌ 貼齊邊緣 */
.navbar {
position: fixed;
top: 0;
left: 0;
right: 0;
}
/* ✅ 浮動效果 */
.navbar {
position: fixed;
top: 16px;
left: 16px;
right: 16px;
border-radius: 12px;
}
2. 內容與固定元素的關係
| 項目 | 說明 |
|---|
| 檢查內容 | 頁面內容是否被固定導覽列遮擋 |
| 目的 | 確保所有內容都可見 |
/* 為固定導覽列預留空間 */
main {
padding-top: 80px; /* 導覽列高度 + 間距 */
}
/* 或使用 scroll-margin 處理錨點連結 */
[id] {
scroll-margin-top: 80px;
}
3. 一致的容器寬度
| 項目 | 說明 |
|---|
| 檢查內容 | 不同頁面的內容區域寬度是否一致 |
| 目的 | 維持視覺一致性 |
/* 統一使用相同的 max-width */
.container {
max-width: 1280px; /* 或 max-w-7xl */
margin: 0 auto;
padding: 0 16px;
}
4. 響應式設計
| 項目 | 說明 |
|---|
| 檢查內容 | 在各種螢幕尺寸下是否正常顯示 |
| 目的 | 確保行動裝置友善 |
測試斷點:
- 375px(手機)
- 768px(平板)
- 1024px(筆電)
- 1440px(桌機)
五、可訪問性(Accessibility)
1. 圖片替代文字
| 項目 | 說明 |
|---|
| 檢查內容 | 所有 <img> 是否有 alt 屬性 |
| 目的 | 協助螢幕閱讀器使用者 |
<!-- ✅ 好的 alt -->
<img src="hero.jpg" alt="開發者在電腦前工作">
<!-- ✅ 裝飾性圖片使用空 alt -->
<img src="decoration.svg" alt="">
2. 表單標籤
| 項目 | 說明 |
|---|
| 檢查內容 | 所有輸入欄位是否有關聯的 label |
| 目的 | 提升可訪問性和易用性 |
<!-- ✅ 顯式標籤 -->
<label for="email">Email</label>
<input id="email" type="email">
<!-- ✅ 隱式標籤 -->
<label>
Email
<input type="email">
</label>
3. 顏色不是唯一指示
| 項目 | 說明 |
|---|
| 檢查內容 | 資訊是否僅靠顏色區分 |
| 目的 | 協助色盲使用者 |
❌ 僅靠顏色:
紅色 = 錯誤、綠色 = 成功
✅ 顏色 + 圖示/文字:
❌ 錯誤:請填寫此欄位
✅ 成功:已儲存
4. 動畫偏好設定
| 項目 | 說明 |
|---|
| 檢查內容 | 是否尊重使用者的動畫偏好 |
| 目的 | 避免對動畫敏感的使用者不適 |
/* 尊重 prefers-reduced-motion */
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.01ms !important;
transition-duration: 0.01ms !important;
}
}
六、設計系統一致性(Design System Consistency)
1. 色彩使用
| 項目 | 說明 |
|---|
| 檢查內容 | 是否使用預定義的主題色彩 |
| 目的 | 維持品牌一致性 |
/* 使用 CSS 變數定義主題色 */
:root {
--primary: #00ff88;
--secondary: #00d4ff;
--background: #0a0a0a;
--surface: #1a1a1a;
--text: #e5e5e5;
--muted: #6b7280;
}
/* 使用變數而非硬編碼 */
.button {
background: var(--primary); /* ✅ */
/* background: #00ff88; */ /* ❌ */
}
2. 字體層級
| 層級 | 用途 | 建議大小 |
|---|
| H1 | 頁面標題 | 36-48px |
| H2 | 區塊標題 | 24-30px |
| H3 | 小節標題 | 20-24px |
| Body | 內文 | 16-18px |
| Small | 說明文字 | 12-14px |
3. 間距系統
/* 使用一致的間距系統(如 8px 基數) */
--space-1: 4px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-6: 24px;
--space-8: 32px;
--space-12: 48px;
七、交付前檢查清單
視覺品質
互動體驗
明暗模式
排版
可訪問性
總結
| 類別 | 重點項目 |
|---|
| 圖示 | 使用 SVG、一致風格、正確品牌 |
| 互動 | cursor-pointer、hover 回饋、平滑過渡 |
| 對比 | 雙模式測試、4.5:1 對比度 |
| 排版 | 浮動間距、響應式、一致寬度 |
| 可訪問性 | alt 文字、標籤、動畫偏好 |
優秀的 UI/UX 設計不只是「好看」,更是讓使用者能夠高效、愉快地完成任務。定期進行 UI/UX 審計,可以確保產品持續維持高品質的使用者體驗。
延伸閱讀