無障礙的每個頁面內容需要在「表單」、「語義」、「結構」、「互動行為」下功夫,使用輔助科技的人們就能接受到真正的資訊。
以下基礎知識在前幾篇文章已經帶大家瞭解:
HTML 提供給使用者操作的元素本身是隱含語義的,如 <input>
、 <button>
,不過當我們需要自訂組件(Wiget)去達成某些功能時,就會複合使用 <div>
、 <span>
這樣的組合來實現,這時輔助科技(如螢幕閱讀器)無法透過 Accessibility Tree 去理解網頁功能,本篇文章內容要帶大家來了解「如何傳達HTML 無法表達的語義」:學習 WAI-ARIA。
是由一個無障礙組織與一個重要標準規範組成,分別以它們的縮寫名稱的串接,可以簡稱 ARIA:
這裡使用 Udacity 免費課程中的簡單範例來講解:原生與自訂的 checkbox 差異。
下面範例圖片都是以左邊的 HTML 結構,瀏覽器渲染成右上角的 UI,並產生右下角的語義。
右下角的語義內容,在完整的內容將包含: role
、 name
、 state
、 value
。
(圖片來源:Udacity 課程)
input[type="checkbox"
:
擷取的 DOM + ARIA = Accessibility Tree
輔助工具是去讀取我們的 Accessibility Tree 的內容,再結合 Audio UI 轉成聲音介面念出資訊給使用者,詳細介紹請參考之前寫的文章,而這棵樹其實就在開發者工具當中,以 Chrome 為例,打開開發者工具,再切換到「Elements > Accessibility」,可以看到左手邊的 DOM ,點擊 DOM 上任何元素去看看這棵樹及 ARIA 包含的屬性。
WAI-ARIA 其實是「只修改或補充 Accessibility Tree 的標示或資訊」!
<div>
。<button>
實現 switch,需要加上 role
設定。role
表達群組的概念。在實踐無障礙之前之前要注意地方:
2.1 No ARIA is better than Bad ARIA wai-aria-practices-1.1:
Functionally, ARIA roles, states, and properties are analogous to a CSS for assistive technologies. For screen reader users, ARIA controls the rendering of their non-visual experience. Incorrect ARIA misrepresents visual experiences, with potentially devastating effects on their corresponding non-visual experiences.
ARIA 角色、狀態和屬性之於輔助技術(螢幕閱讀器),就好像瀏覽器的 CSS 一樣,對於使用者,ARIA 控制的不是視覺體驗的呈現,所以不正確的 ARIA 設定將誤導整個操作經驗,而我們也需要瞭解使用者介面元素的含義和目的,否則將是個雙面刃,可能造成潛在的破壞性影響。
接下來還會有其他層面的無障礙介紹,就會來實作了,敬請期待~
圖片似乎消失了? (圖片來源:Udacity 課程)這邊我沒有看到圖
咦~~~晚上我再來看看圖片怎麼了,謝謝妳 ^___^
我處理好了,謝謝 Hannah,因為這次鐵人賽是用「Notion」協作的關係,如果圖片是上傳到 Notion 再從 Notion 複製的話,過了時限就失去圖片檔案的存取權限了!好險妳有留言,不然我都沒發現。