ARIA 角色範例:完整指南
ARIA 角色範例展示了角色屬性如何將介面元素對應到可訪問性樹,WAI-ARIA 1.2 規格定義了 6 個角色類別(小部件、文件結構、地標、活動區域、視窗和摘要),涵蓋 80 多個特定角色。本指南為每個類別提供了可供複製的實際範例,以及確定角色何時提供協助以及何時主動造成傷害的規則。
要點
- ARIA 角色告訴輔助科技一個項目是什麼;它們不會自行添加行為、焦點或鍵盤支援。
- 使用 ARIA 的第一條規則是優先選擇原生 HTML 元素,這些元素已經帶有隱式角色、狀態和鍵盤管理。
- 六個 WAI-ARIA 1.2 角色類別是小部件、文件結構、地標、活動區域、視窗和摘要 - 抽象角色永遠不應出現在您的標記中。
- 地標角色是您可以新增至現有 XHTML/CSS 網站的最具成本效益和最低風險的 ARIA。
- 小部件角色幾乎總是需要 JavaScript 映射來進行鍵盤互動和狀態處理,否則它們會產生比純 HTML 更糟糕的體驗。
- 使用螢幕閱讀器和自動檢查器驗證每個角色;規範中的有效角色對於您的內容來說可能仍然是錯誤的。
ARIA 角色的實際用途
ARIA 角色是您放置在「role」屬性中的標記,用於替換或提供可訪問性樹中元素的語義標識。 <div role="button"> 告訴螢幕閱讀器宣布“按鈕”,但瀏覽器仍然將其視為通用容器:它不可聚焦,不響應 Enter 或 Space,並且沒有禁用狀態。廣告語意與實際行為之間的差距是 ARIA 失敗的最常見原因。這些是常見的詠嘆調角色範例,說明語意如何與行為不同。
WAI-ARIA 規範由 W3C 的可存取富互聯網應用程式工作組維護,定義了角色以及狀態和屬性。角色是「它是什麼」層;諸如 aria-expanded、aria-checked 和 aria-label 之類的狀態和屬性是「它所處的條件」層。沒有所需狀態的角色是不完整的 - role="checkbox" 需要 aria-checked,而 role="combobox" 需要 aria-expanded 加上一個受控列錶框。
原生 HTML 元素具有隱含的角色。 <button> 對應於按鈕角色,<nav> 對應於導航,<h1> 到 <h6> 對應於標題,<input type="checkbox"> 對應於複選框。由於瀏覽器自動提供角色、鍵盤行為和狀態,因此使用 ARIA 的首要規則(記錄在 W3C 的 ARIA 創作實踐指南中)是只要存在等效元素就使用本機語義。僅當沒有合適的本機元素時才尋找顯式角色,例如自訂樹視圖或從「
WAI-ARIA 的六個角色類別
WAI-ARIA 1.2 將角色分為六類,了解角色屬於哪一類可以告訴您您欠 JavaScript 多少。以下是一些常見的詠嘆調角色範例:
相關: — IA 超級位置將在 48 小時內推動 WCAG.
| 類別 | 目的 | 角色範例 | 需要 JavaScript 嗎? |
|---|---|---|---|
| 小工具 | 互動控制 | 按鈕、複選框、選項卡、滑塊、組合框 | 是的 — 鍵盤 + 狀態 |
| 文件結構 | 內容組織 | 標題、清單、清單項目、表格、文章 | 沒有 |
| 地標 | 導航頁面區域 | 橫幅、主要、導航、補充 | 沒有 |
| 即時區域 | 公佈動態更新 | 警報、狀態、日誌、計時器 | 通常 - 觸發更新 |
| 視窗 | 子視窗與對話方塊 | 對話方塊、警報對話方塊 | 是的-焦點管理 |
| 摘要 | 超類角色,從未創作 | 小部件、輸入、部分、地標 | 不適用 — 請勿使用 |
抽象角色只是為了組織分類而存在。在 HTML 中寫入 role="input" 或 role="section" 會產生驗證錯誤,並會產生不可預測的公告,因為這些角色沒有針對輔助技術的定義行為。
地標角色範例
地標角色是最安全、最有影響力的 ARIA 角色範例,您可以新增至舊的 XHTML/CSS 站點,因為它們不需要 JavaScript 並且直接對應到您已有的區域。一個典型的頁面骨架:
<header role="banner">
<nav role="navigation" aria-label="Principal">
<ul>...</ul>
</nav>
</header>
<main role="main">
<article>...</article>
<aside role="complementary" aria-label="Artículos relacionados">...</aside>
</main>
<footer role="contentinfo">...</footer>
每個標記角色對應於一個原生元素 - 頂層的“banner”對應於“
值得一看: — Accesibilidad gestionada:自動化與人性化修訂結合.
常見問題
ARIA 角色是什麼以及它們如何運作?
ARIA 角色是角色屬性中的值,用於定義可訪問性樹中元素的標識,以便螢幕閱讀器正確地讀出它。它們僅改變語義,而不改變外觀、焦點或鍵盤行為。 WAI-ARIA 1.2 規格定義了 6 個角色類別和 80 多個具體角色,每個角色都有所需的狀態和屬性。
我什麼時候應該使用 ARIA 角色而不是本機 HTML?
只有當沒有本機 HTML 元素提供您需要的語意時,才使用 ARIA 角色。 <button>、<nav> 和 <input type='checkbox'> 等本機元素具有隱式角色以及內建鍵盤支援和狀態管理。 ARIA 使用的第一條規則是優先使用本機語義,並且僅為自訂小部件或無法重構的遺留標記添加明確角色。
ARIA 角色和 ARIA 屬性有什麼區別?
ARIA 角色回答“這個項目是什麼”,而 ARIA 屬性(例如 aria-expanded、aria-checked 和 aria-label)回答“它處於什麼狀態”或“它叫什麼”。角色及其所需的屬性協同工作:作為 aria 角色範例,如果沒有 aria-checked,role='checkbox' 是不完整的,而 role='combobox' 需要 aria-expanded 加上受控列錶框。
我可以在任何 HTML 元素上使用 ARIA 角色嗎?
ARIA 角色可以應用於大多數元素,但某些組合是無效或有害的。永遠不應該創建諸如小部件和輸入之類的抽象角色。將連結的角色改為 role='button' 會破壞連結的預期行為,而可聚焦元素上的 role='presentation' 會刪除其語義,同時保留 Tab 鍵順序。
ARIA 角色可以在沒有 JavaScript 的情況下運作嗎?
文件結構和地標角色無需 JavaScript 即可運作,因為它們僅修改語義。選項卡、滑桿和組合框等小部件角色需要 JavaScript 來實現鍵盤交互和更新狀態 - 如果沒有它,元素會宣稱自己是一個控件,但其行為卻不像控件,這比純 HTML 更糟糕。
如何檢查我的 ARIA 角色是否正確?
結合自動化和手動測試。執行 ax DevTools、WAVE 或 Lighthouse 以偵測無效角色和缺少所需屬性,然後使用 NVDA、JAWS 和 VoiceOver 進行測試以確認公告和鍵盤行為。 Chrome 和 Firefox DevTools 中的輔助使用面板顯示計算出的角色,顯示瀏覽器覆蓋或忽略的任何角色。
5 分鐘內即可訪問
免費使用計劃的小工具