[英]WAI-ARIA Roles for Carousels (a.k.a. sliders, slideshows, galleries)
正如您所說的那樣, role=slider
不適合輪播。 您應該使用的是role=listbox
引用自 MDN(見下面的鏈接):
listbox 角色用於標識創建列表的元素,用戶可以從中選擇一個或多個靜態項目,並且與 HTML 元素不同,它可能包含圖像。
有關您應該使用的其他 ARIA 角色的更多信息,請參閱https://developer.mozilla.org/en-US/docs/Accessibility/ARIA/ARIA_Techniques/Using_the_listbox_role ,例如列表框中每個條目的role=option
。
您還可以查看此 YUI 插件(不推薦使用 YUI 2,但文檔對於您的問題仍然有效) http://yui.github.io/yui2/docs/yui_2.9.0_full/examples/carousel /carousel-ariaplugin.html
通過 javascript 將 aria 角色添加到現有輪播中。 我不建議使用它,但您當然可以推斷它的作用並根據需要在標記中復制它。
下面是一個使用 jQuery UI 的可訪問輪播示例: http : //hanshillen.github.io/jqtest/#goto_carousel
控制欄是一個圖像列表,用<ul role="listbox">
標記。 每個<li>
都有role="option"
、 tabindex="-1"
和aria-selected="false"
。
兩個箭頭是帶有title="previous"
和title="next"
<button>
元素,當按下按鈕時,將選擇上一個或下一個列表項,在這種情況下,列表項的屬性更改為aria-selected="true"
和tabindex="0"
。 后者意味着用戶可以直接跳轉到當前選擇的圖像,當然還有合適的替代文字。
此示例中未包含的另一個選項可能是將role="alert"
添加到查看器 div,因此當該 div 的內容更改時,會自動讀取新的替代文本。 這樣用戶就不必按Tab鍵查看圖像,然后按shift + Tab鍵返回按鈕。
我看過很多使用role="listbox"
例子,但這對我來說是不正確的。 列表框是一個表單控件,希望從用戶那里獲得選擇。 如果輪播的目的是讓用戶選擇一個選項,那么使用listbox
,但大多數人不會以這種方式使用輪播組件。 更好的角色是tablist
。 表格列表用於表示數據(與捕獲選項相反)。 輪播代表數據。 顯示特定圖像的鏈接將具有tab
的作用,每個圖像及其相應的數據(例如其標題)將具有tabpanel
的作用。
見http://www.w3.org/TR/2010/WD-wai-aria-practices-20100916/#tabpanel
來自官方W3 教程:
要以輔助技術可感知的方式對輪播進行分組,可以使用值為
region
的role
屬性。 要識別區域,可以使用aria-label
屬性,如下例所示:<div class="carousel" role="region" aria-label="Recent news"> … </div>
所以你應該使用role="region"
既然其他答案已經不能就角色“列表框”、“區域”或“選框”達成一致,那么會彈出另一個答案:角色“組”,結合角色描述“輪播”。
來自非常官方的WAI-ARIA Authoring Practices 1.2 (重點是我的):
輪播容器元素 [...] 具有角色區域或角色組。 輪播容器最合適的角色取決於頁面的信息架構。 [...]
carousel 容器的aria-roledescription 屬性設置為 carousel 。
A11y 很難。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.