跳至主要內容
Niquelao 西班牙文網頁無障礙與前端開發:深入解析 WCAG 標準、無障礙元件及 Firefox 擴充功能,並提供實際程式碼範例。

本網站部分連結為聯盟行銷連結:若您透過該連結購買,我們可能會獲得佣金,且不會增加您的額外費用。這絕不會影響我們的推薦建議。詳情請參閱我們的聯盟行銷聲明。 聯盟行銷聲明.

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:自動化與人性化修訂結合.

”,“main”對應於“
”,“navigation”對應於“

常見問題

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 分鐘內即可訪問

免費使用計劃的小工具