在軟體開發的旅程中,有時候最直接的回饋往往是最有價值的。當使用者看著我們精心設計的介面,毫不客氣地說出「太醜了吧?」時,這不是批評,而是改進的機會。
今天,我們要來談談 GASO (Google Apps Script Odyssey) 的介面美學革命 - 從現代化設計到古樸風格的完整轉型過程。
在之前的版本中,我們採用了現代化的設計理念:
但這些設計在我們的學習地圖應用中產生了幾個問題:
「太醜了吧?請提議如何改善」
這句簡潔的回饋讓我們意識到,技術功能雖然重要,但視覺體驗同樣關鍵。一個好的學習工具不僅要功能強大,更要讓使用者感到舒適和愉悅。
/* 原始現代化配色 */
background: rgba(52, 152, 219, 0.9);
color: #2c3e50;
/* 改為古樸配色 */
background: #8b4513;
color: #f4f1e8;
我們選擇了古樸的配色方案:
/* 從現代系統字體 */
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
/* 改為古典字體 */
font-family: 'Times New Roman', 'Georgia', serif;
Times New Roman 字體不僅具有古典感,更重要的是它與「學習」和「知識」的主題完美契合。
我們移除了所有不必要的白色框框,讓元素直接融入背景:
.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>
/* 古樸風格的陰影 */
box-shadow: 0 4px 16px rgba(139, 69, 19, 0.3);
/* 復古的邊框 */
border: 2px solid #8b4513;
我們使用了更柔和的陰影,顏色也改為棕色系,營造出溫暖、古樸的氛圍。
.header {
background: linear-gradient(135deg, #f4f1e8 0%, #e8e0d0 100%);
}
.header:hover {
background: linear-gradient(135deg, #f6f3ea 0%, #ebe4d5 100%);
}
漸層背景不僅美觀,還能營造出紙張的質感。
.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
確保縮放控制始終在右下角,不隨頁面滾動而移動。
@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;
}
}
在手機版上,我們適當縮小了按鈕尺寸,確保在小螢幕上也能正常使用。
// 從 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}%`;
}
}
GASO 是一個學習地圖應用,古樸的風格能夠:
古樸的配色方案:
右下角的縮放控制:
通過古樸的配色,我們建立了清晰的視覺層次:
縮放控制的重新定位讓操作更加直觀:
古樸的設計風格讓整個應用:
/* 避免過於複雜的漸層 */
background: linear-gradient(135deg, #f4f1e8 0%, #e8e0d0 100%);
簡單的兩色漸層既能營造質感,又不會過於複雜。
/* 多層陰影營造深度 */
box-shadow:
0 4px 16px rgba(139, 69, 19, 0.3),
0 2px 8px rgba(139, 69, 19, 0.2);
/* 平滑的過渡效果 */
transition: all 0.2s ease;
/* 懸停效果 */
.floating-zoom-btn:hover {
transform: scale(1.05);
box-shadow: 0 3px 8px rgba(139, 69, 19, 0.5);
}
@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;
}
}
在手機版上,我們:
/* 使用 transform 而非改變位置 */
.floating-zoom-btn:hover {
transform: scale(1.05);
}
/* 避免重排和重繪 */
.floating-zoom-controls {
position: fixed;
will-change: transform;
}
// 避免重複的 DOM 查詢
const floatingResetBtn = $("floatingResetZoom");
// 使用事件委託
document.addEventListener('click', function(e) {
if (e.target.matches('.floating-zoom-btn')) {
// 處理縮放按鈕點擊
}
});
我們可以考慮實現主題系統,讓使用者選擇:
允許使用者自定義配色方案:
添加更多微妙的動畫效果:
今天的開發過程讓我們深刻體會到,好的設計不僅是技術的實現,更是藝術與科學的結合。
當使用者說「太醜了吧?」時,這不是終點,而是起點。每一次的改進都是向更好的使用者體驗邁進的一步。
在 GASO 的開發旅程中,我們不僅在技術上不斷進步,更在設計美學上持續探索。從現代化到古樸風格的轉型,不僅是視覺的改變,更是對使用者體驗的深度思考。
明天,我們將繼續探索更多可能,讓 GASO 成為更好的學習工具。因為在軟體開發的世界裡,完美永遠在路上,而我們永遠在追求更好的路上。