(圖片來源:How to Make Custom Accessible Checkboxes and Radio Buttons)
2.2 WAI-ARIA States and Properties in WAI-ARIA 1.1
WAI-ARIA provides a collection of accessibility states and properties which are used to support platform accessibility APIs on various operating system platforms. Assistive technologies may access this information through an exposed user agent DOM or through a mapping to the platform accessibility API. When combined with roles, the user agent can supply the assistive technologies with user interface information to convey to the user at any time. Changes in states or properties will result in a notification to assistive technologies, which could alert the user that a change has occurred.
aria-*
作為前綴的屬性這篇文章要來介紹的是關於 ARIA 的 States 與 Properties。
其實這兩個東西都是以 aria-*
作為前綴,並可以加在 HTML 標籤上的屬性(Attribute),基本上會直接以「屬性(Attribute)」一詞作為代稱。人家問你說「欸欸欸,你知道 ARIA 的屬性是指什麼嗎?」其實 ARIA 的屬性就是代表 States 與 Properties 這兩個字的合體!
因為 Property 和 Attribute 在中文常被翻成同一個字——「屬性」,在當初學習時,常常造成混淆。所以在這篇文章中,屬性代表的是 Attribute、Attribute、Attribute!
那你一定會奇怪,上面既然說這兩個字可以用「屬性」一詞作為代稱,又何必要分成兩個字呢?因為:State 和 Property 在概念上完全不同。
aria-label="This is an apple."
,補充該元件的更多說明。id
。role="checkbox"
,再設好狀態的預設值 aria-checked="false"
。被使用者操作之後,我們透過 JavaScript 將值改成 true
,那麼螢幕閱讀器就能念出來讓使用者知道,「哦~我現在有選到這個東西了」。true
、 false
、 mixed
)。上述並不是寫死的規則,但是這是一個我們可以拿來簡易理解 State 和 Property 性質差異的原則。
State 和 Property 一定要和 Role 來做搭配!這三個是要賦予給「當原生 HTML 標籤無法表明它的功能與含義時」,拿來修改或補充在 Accessibility Tree 的。
*
米字號 」結尾的屬性無法於 HTML5 中使用。查看每個屬性在官方文件的詳細定義;MDN 也有一個清楚的屬性列表,可是針對每個屬性的解說還缺很多,倒是 Role 的每項說明很清楚。
屬性太多了,先就這兩個 ARIA 屬性進行比較,剩下的就留給實作時慢慢介紹啦~~
aria-labelledby
相同意思。<ul role="navigation" aria-label="This is a pagination list">...</ul>
<ul role="navigation" aria-labelledby="paginglabel">...</ul>
。aria-labelledby
。id
,如<p id="paginglabel"></p>
。aria-label
相同,但當兩個屬性都存在時,根據 accessible name
演算法,aria-labelledby
的權重比較高。aria-label
比 aria-labelledby
更加簡潔。