# 建立無障礙網頁 ![關於無障礙的一切](../../../../translated_images/zh-TW/webdev101-a11y.8ef3025c858d897a.webp) > 手繪筆記由 [Tomomi Imura](https://twitter.com/girlie_mac) 製作 ```mermaid journey title 你的無障礙學習冒險 section 基礎 了解使用者: 5: 你 測試工具: 4: 你 POUR 原則: 5: 你 section 建立技能 語意 HTML: 4: 你 視覺設計: 5: 你 ARIA 技術: 4: 你 section 精通實踐 鍵盤導覽: 5: 你 表單無障礙: 4: 你 實務測試: 5: 你 ``` ## 課前測驗 [課前測驗](https://ff-quizzes.netlify.app/web/) > 網路的力量在於其普遍性。無論有無障礙,每個人都能使用是關鍵。 > > \- Sir Timothy Berners-Lee,W3C 主任暨萬維網發明者 這裡有件事可能會讓你吃驚:當你建立無障礙網站時,你不只是幫助有障礙的人——事實上你是在讓網路變得更好,對所有人都有益! 你有沒有注意過路口的人行道斜坡?它最初是為輪椅設計的,但現在也幫助推嬰兒車的人、運送員推貨車、旅行者拉行李箱,以及騎腳踏車的人。這正是無障礙網頁設計的運作方式──幫助某一群體的解決方案,往往最終惠及所有人。很酷,對吧? 在本課中,我們將探索如何創建真正適合所有人使用的網站,不論他們怎麼瀏覽網路。你將發現已納入網頁標準中的實用技巧,學習使用測試工具實際操作,並看到無障礙如何改善所有使用者的網站可用性。 到本課結束時,你將有信心將無障礙自然地融入你的開發流程。準備好探索如何透過有心的設計選擇,讓數十億人都能使用網路嗎?讓我們開始吧! ```mermaid mindmap root((網頁無障礙)) Users Screen readers Keyboard navigation Voice control Magnification Technologies HTML語意 ARIA屬性 CSS焦點指示器 鍵盤事件 Benefits 更廣泛的受眾 更佳的SEO 法律遵循 通用設計 Testing 自動化工具 手動測試 使用者回饋 真實輔助技術 ``` > 你可以在 [Microsoft Learn](https://docs.microsoft.com/learn/modules/web-development-101/accessibility/?WT.mc_id=academic-77807-sagibbon) 上學習這堂課! ## 了解輔助技術 在開始編碼前,讓我們先花點時間了解不同能力的人是如何瀏覽網路的。這不只是理論──了解這些真實的瀏覽模式會讓你成為更好的開發者! 輔助技術是非常厲害的工具,幫助有障礙的人以你可能意想不到的方式與網站互動。一旦你懂得這些技術的運作,建立無障礙網頁就會變得更直覺。就像學會用別人的視角看你的程式碼。 ### 螢幕閱讀器 [螢幕閱讀器](https://en.wikipedia.org/wiki/Screen_reader) 是相當先進的技術,能將數位文字轉換成語音或點字輸出。雖然主要用於視障人士,但對有學習障礙如失讀症的使用者也非常有幫助。 我喜歡把螢幕閱讀器想像成一本有智慧的旁白幫你朗讀書籍。它會依照邏輯順序朗讀內容,宣告可互動元素如「按鈕」或「連結」,並提供鍵盤快捷鍵在頁面中跳轉。但關鍵是──螢幕閱讀器只有在我們用適當結構和有意義的內容建網站時,才能發揮魔力。這就是你作為開發者的角色! **各平台常見螢幕閱讀器:** - **Windows**: [NVDA](https://www.nvaccess.org/about-nvda/)(免費且最流行)、[JAWS](https://webaim.org/articles/jaws/)、[Narrator](https://support.microsoft.com/windows/complete-guide-to-narrator-e4397a0d-ef4f-b386-d8ae-c172f109bdb1/?WT.mc_id=academic-77807-sagibbon)(內建) - **macOS/iOS**:[VoiceOver](https://support.apple.com/guide/voiceover/welcome/10)(內建且功能強大) - **Android**:[TalkBack](https://support.google.com/accessibility/android/answer/6283677)(內建) - **Linux**:[Orca](https://wiki.gnome.org/Projects/Orca)(免費開源) **螢幕閱讀器如何瀏覽網頁內容:** 螢幕閱讀器提供多種瀏覽方法,讓經驗豐富的使用者更有效率: - **順序閱讀**:從上到下朗讀內容,像讀書一樣 - **地標導航**:在頁面區塊間跳轉(標頭、導航、主內容、頁尾) - **標題導覽**:在標題間跳轉,理解頁面結構 - **連結清單**:產生所有連結列表以快速存取 - **表單控制**:直接跳轉到輸入欄位和按鈕 > 💡 **這件事讓我大開眼界**:有68%的螢幕閱讀器使用者主要靠標題瀏覽頁面([WebAIM 調查](https://webaim.org/projects/screenreadersurvey9/#finding))。你的標題結構就像使用者的地圖──把它做好,真的幫助人快速找到內容! ### 建立你的測試流程 好消息是──有效的無障礙測試並不困難!你需要結合自動化工具(非常擅長抓明顯問題)和實際操作測試。以下是我發現最有效且不耗費太多時間的系統方法: **必要的手動測試流程:** ```mermaid flowchart TD A[🚀 開始測試] --> B{⌨️ 鍵盤導覽} B --> C[使用Tab鍵瀏覽所有互動元素] C --> D{🎧 螢幕閱讀器測試} D --> E[使用NVDA/VoiceOver測試] E --> F{🔍 縮放測試} F --> G[將縮放設定為200%並測試功能] G --> H{🎨 色彩/對比度檢查} H --> I[確認所有文字符合對比度標準] I --> J{👁️ 焦點管理} J --> K[確保焦點指示器可見] K --> L[✅ 測試完成] style A fill:#e3f2fd style L fill:#e8f5e8 style B fill:#fff3e0 style D fill:#f3e5f5 style F fill:#e0f2f1 style H fill:#fce4ec style J fill:#e8eaf6 ``` **逐步測試清單:** 1. **鍵盤導覽**:只用 Tab、Shift+Tab、Enter、空白鍵和方向鍵 2. **螢幕閱讀器測試**:啟用 NVDA、VoiceOver 或 Narrator,眼睛閉著操作 3. **放大測試**:檢測 200% 和 400% 放大比例 4. **色彩對比檢查**:確認所有文字及介面元件 5. **焦點指示測試**:確保所有互動元素有明顯焦點狀態 ✅ **從 Lighthouse 開始**:開啟瀏覽器的開發者工具,執行 Lighthouse 無障礙審核,然後根據結果調整手動測試重點。 ### 縮放與放大工具 你知道有時候手機文字太小你就會用兩指捏合放大嗎,或在戶外亮光下盯著筆電螢幕看?很多用戶每天都依賴放大工具讓內容變得可讀。這包括低視力者、長者,以及任何曾在戶外看網站的人。 現代縮放技術不只是放大文字。了解這些工具的運作方式會幫你創造在任意放大比例下都保持功能性與美觀的響應式設計。 **現代瀏覽器的縮放功能:** - **頁面縮放**:所有內容比例放大(文字、圖片、版面)──首選方式 - **僅文字縮放**:放大字體大小,維持原有版面 - **捏合縮放**:行動裝置暫時放大手勢支援 - **瀏覽器支援**:所有現代瀏覽器支援最高 500% 縮放且不破壞功能 **專用放大軟體:** - **Windows**:[放大鏡](https://support.microsoft.com/windows/use-magnifier-to-make-things-on-the-screen-easier-to-see-414948ba-8b1c-d3bd-8615-0e5e32204198)(內建)、[ZoomText](https://www.freedomscientific.com/training/zoomtext/getting-started/) - **macOS/iOS**:[Zoom](https://www.apple.com/accessibility/mac/vision/)(內建且功能先進) > ⚠️ **設計考量**:WCAG 規範要求內容在 200% 縮放時仍需保持可用。此比例應盡量避免水平滾動,所有互動元素也須可操作。 ✅ **測試你的響應式設計**:將瀏覽器縮放至 200% 和 400%。你的版面是否能順暢調整?所有功能能否不需過多滾動就能使用? ## 現代無障礙測試工具 既然你已了解使用輔助技術瀏覽網頁的方式,接下來探索幫助你建置及測試無障礙網站的工具。 想像一下:自動化工具擅長抓明顯錯誤(如遺漏替代文字),而手動測試則幫助你確保網站在真實環境中使用感受良好。兩者結合才能讓你確信網站對所有人都友好。 ### 色彩對比測試 好消息是:色彩對比是最常見的無障礙問題之一,但同時也是最容易修正的。良好的對比對所有人都好──無論是視障者或是在海灘上看手機的人。 **WCAG 對比要求:** | 文字類型 | WCAG AA(最低) | WCAG AAA(加強) | |----------|-----------------|-------------------| | **一般文字**(小於 18pt) | 4.5:1 對比比率 | 7:1 對比比率 | | **大字**(18pt 以上或 14pt 加粗) | 3:1 對比比率 | 4.5:1 對比比率 | | **介面元件**(按鈕、表單邊框) | 3:1 對比比率 | 3:1 對比比率 | **必備測試工具:** - [Colour Contrast Analyser](https://www.tpgi.com/color-contrast-checker/) - 桌面軟體含色彩取樣器 - [WebAIM Contrast Checker](https://webaim.org/resources/contrastchecker/) - 網頁版即時反饋 - [Stark](https://www.getstark.co/) - Figma、Sketch、Adobe XD 設計外掛 - [Accessible Colors](https://accessible-colors.com/) - 尋找無障礙色彩調色盤 ✅ **建立更佳色彩調色盤**:從品牌色開始,利用對比檢測工具創造無障礙的色彩變體。將其記錄為你的設計系統可用的無障礙色彩 Token。 ### 全面無障礙稽核 最有效的無障礙測試結合多種方法。沒一個工具能抓出所有問題,建立包含多種方法的測試流程才能全面。 **瀏覽器內建測試(開發者工具):** - **Chrome/Edge**:Lighthouse 無障礙檢測 + 無障礙面板 - **Firefox**:無障礙檢查器與詳細樹狀圖 - **Safari**:Web 檢查器的稽核分頁搭配 VoiceOver 模擬 **專業測試擴充套件:** - [axe DevTools](https://www.deque.com/axe/devtools/) - 業界標準自動化測試 - [WAVE](https://wave.webaim.org/extension/) - 錯誤視覺反饋高亮 - [Accessibility Insights](https://accessibilityinsights.io/) - 微軟完整測試套件 **命令列及 CI/CD 整合:** - [axe-core](https://github.com/dequelabs/axe-core) - JavaScript 自動化測試庫 - [Pa11y](https://pa11y.org/) - 命令列無障礙測試工具 - [Lighthouse CI](https://github.com/GoogleChrome/lighthouse-ci) - 自動化無障礙評分 > 🎯 **測試目標**:以 Lighthouse 得分 95+ 作為基準。記住,自動化測試只能找到約 30-40% 的無障礙問題──手動測試依然非常重要! ### 🧠 **測試技能檢視:準備找出問題了嗎?** **讓我們看看你對無障礙測試的感覺:** - 哪種測試方法你現在覺得最容易上手? - 你能想像用純鍵盤操作一整天嗎? - 你個人在網路上遇過的無障礙障礙是什麼? ```mermaid pie title "不同方法捕捉到的無障礙問題" "自動化工具" : 35 "手動測試" : 40 "用戶反饋" : 25 ``` > **自信提升**:專業無障礙測試人員正是使用這樣的組合方法。你在學習業界公認的慣例! ## 從零開始打造無障礙 無障礙成功的關鍵是從一開始就把它建築在基礎上。我知道你可能會想「晚點再加無障礙」,但這就像房子蓋好後再想加斜坡一樣。可能嗎?可以。但簡單嗎?不容易。 把無障礙想像成蓋房子──比起事後改建,從設計圖開始就規劃輪椅可達性會輕鬆好多。 ### POUR 原則:你的無障礙基礎 網頁內容無障礙指南(WCAG)圍繞四個基本原則,英文簡寫 POUR。別擔心──這不是生硬的學術概念,而是讓內容適合所有人的實用準則。 當你習慣 POUR 後,做無障礙決策會更直覺。它就像心中的檢查清單,指引你的設計抉擇。來看細節: ```mermaid flowchart LR A[🔍 可感知的
使用者能感知它嗎?] --> B[🎮 可操作的
使用者能使用它嗎?] B --> C[📖 可理解的
使用者能理解它嗎?] C --> D[💪 可靠的
它在各處都能運作嗎?] A1[替代文字
字幕
對比] --> A B1[鍵盤存取
無癲癇發作
時間限制] --> B C1[清晰語言
可預測
錯誤協助] --> C D1[有效程式碼
相容性
未來可用] --> D style A fill:#e1f5fe style B fill:#e8f5e8 style C fill:#fff3e0 style D fill:#f3e5f5 ``` **🔍 可感知(Perceivable)**:資訊必須以使用者可感知的方式呈現 - 為非文字內容(圖片、影片、音訊)提供替代文字 - 確保所有文字及介面元件具足夠色彩對比 - 為多媒體提供字幕及文字稿 - 設計內容在縮放至 200% 時仍能正常使用 - 用多重感官特性(不只是顏色)來傳達資訊 **🎮 可操作(Operable)**:所有介面元件必須能透過可用的輸入方式操作 - 所有功能須可用鍵盤導覽操作 - 提供使用者足夠時間閱讀與互動內容 - 避免造成癲癇發作或前庭系統疾病的內容 - 以清晰的結構與地標協助使用者高效率導航 - 確保互動元素有足夠的點擊區域(最少44px) **📖 可理解(Understandable)**:資訊及介面操作必須清晰易懂 - 使用清晰、簡單且適合目標受眾的語言 - 確保內容出現與操作方式均可預期且一致 - 為使用者輸入提供清楚說明和錯誤訊息 - 幫助使用者理解並修正表單錯誤 - 以合理閱讀順序與資訊層次組織內容 **💪 可靠(Robust)**:內容必須在不同技術與輔助設備下可靠運作 - **以有效且語意正確的 HTML 作為基礎** - **確保與現有及未來輔助技術相容** - **遵守網路標準及標記最佳實踐** - **在不同瀏覽器、裝置和輔助工具上測試** - **結構化內容,使其在不支援進階功能時也能優雅降級** ### 🎯 **POUR 原則檢查:讓它深入人心** **快速反思基礎概念:** - 你能想到哪個網站功能違反了每個 POUR 原則嗎? - 對你這個開發者來說,哪個原則最自然? - 這些原則如何改善所有人的設計,而不僅僅是對殘障使用者? ```mermaid quadrantChart title POUR 原則影響矩陣 x-axis 低努力 --> 高努力 y-axis 低影響 --> 高影響 quadrant-1 快速獲勝 quadrant-2 重大專案 quadrant-3 延後考慮 quadrant-4 策略重點 Alt Text: [0.2, 0.9] Color Contrast: [0.3, 0.8] Semantic HTML: [0.4, 0.9] Keyboard Nav: [0.6, 0.8] ARIA Complex: [0.8, 0.7] Screen Reader Testing: [0.7, 0.6] ``` > **記住**:從高影響、低成本的改進開始。語意 HTML 和 alt 文字能以最低成本帶來最大無障礙提升! ## 創造無障礙的視覺設計 良好的視覺設計與無障礙密不可分。當你以無障礙為設計目標時,通常會發現這些限制促使你設計出更簡潔、優雅的解決方案,造福所有使用者。 讓我們深入探討如何創造對所有人都適用、視覺吸引的設計,不論他們的視覺能力如何或在什麼環境下瀏覽你的內容。 ### 顏色與視覺無障礙策略 顏色是強大的溝通工具,但絕不該是傳遞重要資訊的唯一方式。跨越顏色限制的設計能創造更堅韌且包容的體驗,在更多情況下有效。 **為色覺差異設計:** 約有 8% 男性與 0.5% 女性有某種色覺差異(常稱為「色盲」)。最常見的類型有: - **綠色盲(Deuteranopia)**:難區分紅與綠 - **紅色盲(Protanopia)**:紅色顯得較暗 - **藍色盲(Tritanopia)**:難區分藍與黃(罕見) **包容性色彩策略:** ```css /* ❌ Bad: Using only color to indicate status */ .error { color: red; } .success { color: green; } /* ✅ Good: Color plus icons and context */ .error { color: #d32f2f; border-left: 4px solid #d32f2f; } .error::before { content: "⚠️"; margin-right: 8px; } .success { color: #2e7d32; border-left: 4px solid #2e7d32; } .success::before { content: "✅"; margin-right: 8px; } ``` **超越基本對比要求:** - 使用色盲模擬器測試你的色彩選擇 - 搭配使用圖案、紋理或形狀來強化顏色標示 - 確保互動狀態在無色彩下依然可辨 - 考慮你的設計在高對比模式下的呈現 ✅ **測試你的色彩無障礙性**:使用 [Coblis](https://www.color-blindness.com/coblis-color-blindness-simulator/) 等工具查看你的網站對不同色覺類型使用者的呈現。 ### 焦點指示與互動設計 焦點指示就像數位游標,告訴鍵盤使用者目前所在頁面位置。良好設計的焦點指示提升所有人的體驗,使互動清晰且可預測。 **現代焦點指示最佳實踐:** ```css /* Enhanced focus styles that work across browsers */ button:focus-visible { outline: 2px solid #0066cc; outline-offset: 2px; box-shadow: 0 0 0 4px rgba(0, 102, 204, 0.25); } /* Remove focus outline for mouse users, preserve for keyboard users */ button:focus:not(:focus-visible) { outline: none; } /* Focus-within for complex components */ .card:focus-within { box-shadow: 0 0 0 3px rgba(74, 144, 164, 0.5); border-color: #4A90A4; } /* Ensure focus indicators meet contrast requirements */ .custom-focus:focus-visible { outline: 3px solid #ffffff; outline-offset: 2px; box-shadow: 0 0 0 6px #000000; } ``` **焦點指示要求:** - **可見性**:與周圍元素對比至少 3:1 - **寬度**:元素周圍至少 2px 厚 - **持續性**:應持續顯示直到焦點移開 - **明顯不同**:與其他 UI 狀態在視覺上有區別 > 💡 **設計提示**:優秀的焦點指示通常結合外框、陰影和色彩變化,確保在不同背景和環境下可見。 ✅ **檢查焦點指示**:用 Tab 鍵瀏覽網站,找出焦點指示是否清晰,是否有看不清或完全沒有的元件? ### 語意 HTML:無障礙的基礎 語意 HTML 就像給輔助技術網站的衛星導航系統。當你為元素正確使用特定 HTML 標籤,等於給螢幕閱讀器、鍵盤及其他工具提供詳細導航地圖,幫助使用者有效瀏覽。 我喜歡用這個比喻:語意 HTML 就像有明確分類且標示清楚的圖書館,相較於書籍亂放的倉庫。兩邊都有書,但你肯定比較想在圖書館裡找書,對吧? ```mermaid flowchart TD A[🏠 HTML 文件] --> B[📰 頁首] A --> C[🧭 導覽] A --> D[📄 主內容] A --> E[📋 頁尾] B --> B1[h1: 網站名稱
商標與品牌] C --> C1[ul: 導覽
主要連結] D --> D1[article: 內容
section: 小節] D --> D2[aside: 側邊欄
相關內容] E --> E1[nav: 頁尾連結
版權資訊] D1 --> D1a[h1: 頁面標題
h2: 主要區段
h3: 小節] style A fill:#e3f2fd style B fill:#e8f5e8 style C fill:#fff3e0 style D fill:#f3e5f5 style E fill:#e0f2f1 ``` **無障礙頁面結構基石:** ```html

Your Site Name

Article Title

Published on

First Section

Content that relates to this section...

Second Section

More related content...

``` **語意 HTML 如何改變無障礙:** | 語意元素 | 目的 | 螢幕閱讀器優勢 | |------------------|---------|----------------------| | `
` | 頁面或區段標頭 | 「橫幅地標」- 快速導航至頂部 | | `