iT邦幫忙

2025 iThome 鐵人賽

DAY 23
0

Day 23: 介面美學革命 - 從現代化到古樸風格的視覺轉型

前言:當使用者說「太醜了吧?」

在軟體開發的旅程中,有時候最直接的回饋往往是最有價值的。當使用者看著我們精心設計的介面,毫不客氣地說出「太醜了吧?」時,這不是批評,而是改進的機會。

今天,我們要來談談 GASO (Google Apps Script Odyssey) 的介面美學革命 - 從現代化設計到古樸風格的完整轉型過程。

問題診斷:現代化設計的陷阱

原始設計的問題

在之前的版本中,我們採用了現代化的設計理念:

  • 半透明的毛玻璃效果
  • 現代藍色配色方案
  • 圓形按鈕設計
  • 系統字體

但這些設計在我們的學習地圖應用中產生了幾個問題:

  1. 視覺衝突:現代化設計與古樸的地圖背景不協調
  2. 元素分離感:每個區塊都是獨立的框框,缺乏整體感
  3. 色彩過於鮮豔:藍色系與整體的古樸主題不符
  4. 缺乏故事性:現代化設計無法傳達「探索學習路徑」的冒險感

使用者的真實回饋

「太醜了吧?請提議如何改善」

這句簡潔的回饋讓我們意識到,技術功能雖然重要,但視覺體驗同樣關鍵。一個好的學習工具不僅要功能強大,更要讓使用者感到舒適和愉悅。

解決方案:古樸風格的視覺轉型

1. 配色方案的重新思考

從現代藍色到古樸棕色

/* 原始現代化配色 */
background: rgba(52, 152, 219, 0.9);
color: #2c3e50;

/* 改為古樸配色 */
background: #8b4513;
color: #f4f1e8;

我們選擇了古樸的配色方案:

  • 主色調:#8b4513 (深棕色) - 象徵古老的羊皮紙
  • 背景色:#f4f1e8 到 #e8e0d0 的漸層 - 模擬泛黃的紙張
  • 文字色:#8b4513 和 #654321 - 深淺不同的棕色系
  • 強調色:#a0522d - 較亮的棕色,用於重要元素

2. 字體的復古選擇

/* 從現代系統字體 */
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;

/* 改為古典字體 */
font-family: 'Times New Roman', 'Georgia', serif;

Times New Roman 字體不僅具有古典感,更重要的是它與「學習」和「知識」的主題完美契合。

3. 布局的重新設計

Header 的簡化

我們移除了所有不必要的白色框框,讓元素直接融入背景:

.header {
  background: linear-gradient(135deg, #f4f1e8 0%, #e8e0d0 100%);
  border-bottom: 2px solid #8b4513;
  box-shadow: 0 4px 12px rgba(139, 69, 19, 0.2);
}

縮放控制的重新定位

最重大的改變是將縮放控制從 header 移到右下角:

<!-- 右下角浮動縮放控制 -->
<div class="floating-zoom-controls">
  <button class="floating-zoom-btn" id="floatingZoomOut" title="縮小">−</button>
  <button class="floating-zoom-reset" id="floatingResetZoom" title="重設縮放">100%</button>
  <button class="floating-zoom-btn" id="floatingZoomIn" title="放大">+</button>
  <button class="floating-zoom-fit" id="floatingFitWidth" title="觀看全地圖">全圖</button>
</div>

4. 視覺層次的優化

陰影和邊框的調整

/* 古樸風格的陰影 */
box-shadow: 0 4px 16px rgba(139, 69, 19, 0.3);

/* 復古的邊框 */
border: 2px solid #8b4513;

我們使用了更柔和的陰影,顏色也改為棕色系,營造出溫暖、古樸的氛圍。

技術實現:CSS 的藝術

1. 漸層背景的應用

.header {
  background: linear-gradient(135deg, #f4f1e8 0%, #e8e0d0 100%);
}

.header:hover {
  background: linear-gradient(135deg, #f6f3ea 0%, #ebe4d5 100%);
}

漸層背景不僅美觀,還能營造出紙張的質感。

2. 浮動元素的定位

.floating-zoom-controls {
  position: fixed;
  bottom: 20px;
  right: 20px;
  z-index: 1001;
  background: rgba(244, 241, 232, 0.95);
  backdrop-filter: blur(10px);
}

使用 position: fixed 確保縮放控制始終在右下角,不隨頁面滾動而移動。

3. 響應式設計的考量

@media (max-width: 768px) {
  .floating-zoom-controls {
    bottom: 10px;
    right: 10px;
    padding: 8px;
    gap: 6px;
  }
  
  .floating-zoom-btn {
    width: 36px;
    height: 36px;
    font-size: 16px;
  }
}

在手機版上,我們適當縮小了按鈕尺寸,確保在小螢幕上也能正常使用。

JavaScript 的配合調整

事件綁定的更新

// 從 header 縮放按鈕改為浮動縮放按鈕
$("floatingZoomIn").addEventListener("click", () => applyZoom(state.scalePct + 10));
$("floatingZoomOut").addEventListener("click", () => applyZoom(state.scalePct - 10));
$("floatingResetZoom").addEventListener("click", resetZoom);
$("floatingFitWidth").addEventListener("click", fitToWidth);

顯示更新的函數調整

// 更新浮動縮放顯示
function updateFloatingZoomDisplay() {
  const floatingResetBtn = $("floatingResetZoom");
  if (floatingResetBtn) {
    floatingResetBtn.textContent = `${state.scalePct}%`;
  }
}

設計哲學:為什麼選擇古樸風格?

1. 主題一致性

GASO 是一個學習地圖應用,古樸的風格能夠:

  • 營造「探索知識」的冒險感
  • 與地圖背景的復古風格一致
  • 讓使用者感受到「翻閱古籍」的學習氛圍

2. 視覺舒適性

古樸的配色方案:

  • 減少眼睛疲勞
  • 營造溫暖、舒適的學習環境
  • 避免過於鮮豔的顏色干擾學習

3. 功能性的考量

右下角的縮放控制:

  • 不干擾主要內容的瀏覽
  • 符合使用者的操作習慣
  • 在任何縮放比例下都容易找到

使用者體驗的改善

1. 視覺層次的清晰化

通過古樸的配色,我們建立了清晰的視覺層次:

  • 主要內容:地圖和節點
  • 輔助功能:搜尋和縮放控制
  • 導航元素:header 和側邊面板

2. 操作流程的優化

縮放控制的重新定位讓操作更加直觀:

  • 不需要打開側邊面板就能縮放
  • 縮放比例即時顯示
  • 所有縮放功能都在一個地方

3. 整體氛圍的營造

古樸的設計風格讓整個應用:

  • 更有學習的儀式感
  • 營造專注的學習環境
  • 提升使用者的沉浸感

技術細節:CSS 最佳實踐

1. 漸層的使用

/* 避免過於複雜的漸層 */
background: linear-gradient(135deg, #f4f1e8 0%, #e8e0d0 100%);

簡單的兩色漸層既能營造質感,又不會過於複雜。

2. 陰影的層次

/* 多層陰影營造深度 */
box-shadow: 
  0 4px 16px rgba(139, 69, 19, 0.3),
  0 2px 8px rgba(139, 69, 19, 0.2);

3. 過渡動畫的應用

/* 平滑的過渡效果 */
transition: all 0.2s ease;

/* 懸停效果 */
.floating-zoom-btn:hover {
  transform: scale(1.05);
  box-shadow: 0 3px 8px rgba(139, 69, 19, 0.5);
}

響應式設計的考量

桌面版設計

  • 縮放控制位於右下角
  • 按鈕尺寸適中 (40px)
  • 間距充足,易於點擊

手機版適配

@media (max-width: 768px) {
  .floating-zoom-controls {
    bottom: 10px;
    right: 10px;
    padding: 8px;
    gap: 6px;
  }
  
  .floating-zoom-btn {
    width: 36px;
    height: 36px;
    font-size: 16px;
  }
}

在手機版上,我們:

  • 縮小了按鈕尺寸
  • 減少了間距
  • 調整了位置,避免與其他元素衝突

效能優化

1. CSS 的優化

/* 使用 transform 而非改變位置 */
.floating-zoom-btn:hover {
  transform: scale(1.05);
}

/* 避免重排和重繪 */
.floating-zoom-controls {
  position: fixed;
  will-change: transform;
}

2. JavaScript 的優化

// 避免重複的 DOM 查詢
const floatingResetBtn = $("floatingResetZoom");

// 使用事件委託
document.addEventListener('click', function(e) {
  if (e.target.matches('.floating-zoom-btn')) {
    // 處理縮放按鈕點擊
  }
});

測試和驗證

1. 視覺測試

  • 在不同螢幕尺寸下測試
  • 檢查顏色對比度
  • 驗證字體的可讀性

2. 功能測試

  • 縮放按鈕的響應性
  • 事件綁定的正確性
  • 狀態同步的準確性

3. 使用者測試

  • 收集使用者的回饋
  • 觀察使用者的操作習慣
  • 調整設計以符合實際需求

未來改進的方向

1. 主題系統

我們可以考慮實現主題系統,讓使用者選擇:

  • 古樸風格(當前)
  • 現代風格
  • 深色模式

2. 自定義配色

允許使用者自定義配色方案:

  • 主色調選擇
  • 背景色調整
  • 文字色設定

3. 動畫效果

添加更多微妙的動畫效果:

  • 頁面載入動畫
  • 按鈕點擊回饋
  • 狀態轉換動畫

總結:設計的藝術與科學

今天的開發過程讓我們深刻體會到,好的設計不僅是技術的實現,更是藝術與科學的結合。

技術層面

  • CSS 的靈活運用:漸層、陰影、過渡動畫
  • JavaScript 的配合:事件綁定、狀態管理
  • 響應式設計:多設備的適配

設計層面

  • 視覺層次的建立:主次分明的布局
  • 色彩心理學的應用:古樸配色營造學習氛圍
  • 使用者體驗的優化:直觀的操作流程

哲學層面

  • 主題的一致性:設計與功能的完美結合
  • 美學的考量:不僅要功能強大,更要美觀舒適
  • 使用者的中心:以使用者的需求為出發點

結語:持續改進的旅程

當使用者說「太醜了吧?」時,這不是終點,而是起點。每一次的改進都是向更好的使用者體驗邁進的一步。

在 GASO 的開發旅程中,我們不僅在技術上不斷進步,更在設計美學上持續探索。從現代化到古樸風格的轉型,不僅是視覺的改變,更是對使用者體驗的深度思考。

明天,我們將繼續探索更多可能,讓 GASO 成為更好的學習工具。因為在軟體開發的世界裡,完美永遠在路上,而我們永遠在追求更好的路上。


上一篇
Day 22: 容器尺寸問題的深度診斷與修復 - 從雙重縮放到精確置中
系列文
亨利羊帶你 Google Apps Script 從入門到精通:放棄長篇大論的教學吧,你需要的只是一些精心設計的 prompt!23
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言