可能是最全面的「無障礙設計」學習指南

@Angelaaa (公眾號:漫聲細語):之前整理「色彩對比度」相關內容時,連帶學習了「無障礙設計」的知識,這次一起整理分享出來。一共分視覺、聽覺、行動、認知四個方面來闡述。

編者按:《超全面!色彩無障礙設計之「對比度」的探索》

一. 什么是「無障礙設計」,為什么它這么重要?

在這個多樣化的世界上,并不是所有人都能毫無障礙、順利地使用各種產品。

優秀的無障礙設計,不僅能讓殘疾人用戶正常地與產品交互;還會為普通人提供更好的使用體驗。

可能是最全面的「無障礙設計」學習指南

舉個例子,住宅樓入口設置的坡道,本是方便使用輪椅的用戶出入。但實際使用中,多數老人、推自行車的人,甚至正常人都更愿意走坡道而非樓梯,因為走坡道更省力。

所以坡道的設計,不僅解決了殘疾人出入的問題,也為正常人提供了更好的體驗。

可能是最全面的「無障礙設計」學習指南

△ 住宅樓入口坡道

二. 無障礙設計不是創新的阻礙

無障礙設計并不會強迫設計師把設計變丑,變無聊,變雜亂。相反,若能在考慮各種設計限制時,也同時考慮「無障礙設計規范」,會通過一些限定激發出新想法,促使設計師做出為所有人所用的更好產品。

我們要努力為所有人設計——包括盲人,色盲患者,視力低下患者;聽覺失聰或有聽覺障礙的人;有認知障礙的患者;為年長、年幼的人設計;為有明確目的的人、只是閑逛的人、單純只為享受好的用戶體驗的人而設計。

可能是最全面的「無障礙設計」學習指南

△ Design for everyone.

做無障礙設計時,主要考慮以下 4 個主要方面:

  • 視覺無障礙設計(visual)
  • 聽覺無障礙設計(hearing)
  • 行動無障礙設計(mobility)
  • 認知無障礙設計(cognition)

三. 視覺無障礙設計

「視覺障礙」包括:從難以區分顏色到完全失明。

設計要點:

  • 確保文字、可交互控件和背景的對比度(contrast ratio threshold),滿足最低標準。
  • 別只用顏色傳達信息(using solely color) ,讓文字字號可調( resizable)。
  • 確保界面上所有的控件都可借助輔助技術(assistive technologies)使用,如屏幕閱讀器,放大鏡和盲文顯示器(screen readers, magnifiers and braille displays)。 這就意味著必須讓 accessibility APIs 可以通過程序確定每個控件的角色、狀態、價值、標題。

詳細闡述關鍵點:

1. ?確保文字和背景的顏色有足夠高的對比度

根據According to the WCAG?標準,文字和背景色的對比度至少是4.5:1;如果是大于等于24 px/ 19 px bold 的文字,對比度至少是3:1 。這項規范可以幫助視力障礙用戶更好地使用互聯網產品。

可能是最全面的「無障礙設計」學習指南

△ Recommended contrast for web applications.

這是一個滿足對比度標準的好案例:

可能是最全面的「無障礙設計」學習指南

△ Passing colors in Salesforce1.

Input 是常被人忽略的一個方面。下圖7個 input 的例子,只有「Search Twitter」的對比度足夠高,滿足「無障礙設計標準」讓人看得清。

可能是最全面的「無障礙設計」學習指南

△ Only the “Search Twitter” placeholder has the minimum required contrast level.

我在另一篇文章《色彩無障礙設計(Color Accessibility)之「對比度」的探索》中有詳細闡述關于對比度方面的知識,包括概念介紹、實施方法、推薦工具。

2. 別只依靠顏色傳達信息

不能單單只依靠顏色傳達諸如「 狀態指示、區分視覺控件、實時響應」等信息。如果只用顏色區分,可能會讓一些用戶不方便、甚至不能分辨2中顏色的區別。這些用戶包括色盲患者(1/12 的男性,1/200 的女性)、視力低下患者(1/30 的人)、甚至盲人(1/188 的人)。

可能是最全面的「無障礙設計」學習指南

△ 不同視覺障礙患者看到的畫面

推薦的做法是:同時使用多種視覺線索傳達重要信息;只使用顏色強調或補充已經能看明白的信息。

舉個例子,下面的 input 中,視力正常用戶能輕易分清 Email 是錯誤狀態,但色盲用戶就完全看不出。

可能是最全面的「無障礙設計」學習指南

△ 左:正常用戶所見;右:色盲用戶所見

解決辦法有很多種,比如:同時使用「顏色區分+標簽+說明」,來表明哪個是錯誤狀態。

可能是最全面的「無障礙設計」學習指南

△ 同時用顏色、標簽、輔助說明來區分

辦法是無盡的,原則是唯一的:別只用顏色區分。

Facebook 的 input 是個很好的例子:

可能是最全面的「無障礙設計」學習指南

△ facebook 的表單界面

同時使用了 3 種視覺線索區分錯誤狀態:

  • 紅色邊框。
  • 嘆號 icon。
  • tooltip 提示,解釋為什么出現錯誤。

3. 注意表單的設計

近幾年,表單輸入框的形式有了不小轉變。現代風格的表單設計傾向于往極簡主義發展,拋棄了傳統表單的一些基本屬性,比如清晰的邊框,明顯的標簽——這大大降低了使用體驗。

下圖是傳統輸入框樣式,界限明晰,標簽清楚。中間可填充顏色也可不填充。

可能是最全面的「無障礙設計」學習指南

△ 一個合理的輸入框

清晰的表單邊框對于有認知障礙、視力低下的用戶非常重要。清晰的視覺線索,會讓他們很容易弄清楚輸入框在哪,面積有多大。

下圖是一個很流行的筆記app的輸入框。

可能是最全面的「無障礙設計」學習指南

△ 如果我想搜索,我該點哪?用于強調位置的光標都被移除了。

上面這個界面中,點擊「searching your notebooks」的任意一處,都可以開始搜索。

下面這個界面中,有 2 個 input field, 如果我想 「 tell your story」,我該點哪?

可能是最全面的「無障礙設計」學習指南

△ Where does one click to tell their story?

答案是只有點擊藍框框里,才能輸入文字。點擊藍框以外的區域,沒任何反應。

可能是最全面的「無障礙設計」學習指南

△ If you click outside of the blue box, nothing will happen.

下圖這個筆記輸入界面的例子,也沒有傳統的輸入框。但標題是限定在2條水平線內的,并且用戶可以點擊下面的任意處開始輸入筆記內容。

可能是最全面的「無障礙設計」學習指南

△ Non-standard, but still with enough cues for users with disabilities

4. 沒標簽的輸入框

Text label 能告訴用戶輸入框的目的,placeholder 沒這么大作用。

不推薦 placeholder 代替 text label 的輸入框,輸入內容時placeholder消失,會讓用戶忘記輸入目的。

可能是最全面的「無障礙設計」學習指南

△ 不推薦的形式

推薦把 lable 拿到輸入框外側,時刻提醒用戶自己輸入的是什么。

可能是最全面的「無障礙設計」學習指南

△ 改進方式:Compound fields with visible labels

5. 可以用屏幕閱讀器順利使用你的 UI 控件嗎?

這這主要針對:使用 Dragon NaturallySpeaking 等語音識別工具的視覺障礙用戶。(有數據顯示大概 1–2% 的用戶會使用 屏幕閱讀器(screen reader)

舉個例子,如果你的「menu」只呈現一個圖像icon,像這樣:

可能是最全面的「無障礙設計」學習指南

△ menu

為了說明這是一個「菜單按鈕」,它需要一個「文字替代方案」,比如「menu」來傳達和圖像相同的信息。可以使用 aria-label attribute, aria-labelledby attribute,或者直接寫上「菜單」。 WebAIM Quick Reference 里提供了一些 general technical tips。

(aria-label 是一個 HTML attribute,用來告訴讀屏軟件某個元素是什麼,提升 Web Accessibility)

任何圖像形式的 UI 控件,都需要為圖像提供一個「文字替代方案」。

6. 別讓用戶到處 hover 才能找到答案

這主要針對:

  • 使用 Dragon NaturallySpeaking 等語音識別工具的視覺障礙用戶。
  • 有行動障礙的用戶,包括視力正常的 keyboard-only user。

鍵盤用戶和諸如 Dragon 這樣的輔助技術,依靠的是屏幕上可見的交互組件。如果一個鏈接或按鈕在屏幕上不可見,則不可能口頭告知「clidked」。如果一個 keyboard-only user 在一個頁面上看不到按鈕,怎么才能通過一個空白區域導航去想去的地方?

下圖是使用 Dragon Naturally Speaking 的 Gmail 截圖,疊了一層有數字編號的超鏈接。用戶可以說出數字,并與相應的鏈接交互。如果一個鏈接默認不顯示,只有 hover 時才顯示,那可能就只能在空白處顯示一個數字。

可能是最全面的「無障礙設計」學習指南

△ Dragon Naturally Speaking 的 Gmail

這種「hover 后才顯示」的可操作控件的做法很受歡迎。它可以作為計算機科學家艾倫·凱(Alan Kay)所提出的成熟的可用性啟發法(well-established usability heuristic)的解決方案。

Simple things should be simple, complex things should be possible. ——Alan Kay

這種啟發法(heuristic)說得對,但所謂的復雜性應該對所有用戶(包括殘疾人)都是可能的。

不幸的是,對于無障礙設計,許多人都認為應該符合如下說法(這不是 Alan Kay 說的):

Primary things should be visible, secondary things should be shown on hover.

盡量在設計中采用更有包容性的做法,比如:

  • 將輔助操作(secondary action)放置在菜單內,或非模態對話框 (non-modal dialog) 內,而不是只有 hover 才能觸發。
  • 適當減輕次要圖標(secondary icon)的對比度,并在 hover 時加強對比度。
  • 在 hover 時,采用更加明顯的、或比 normal 尺寸更大的形狀顯示。
  • 一個意義明確的圖標(info icon)是比一片空白( white space) 更好的觸發「填寫內容」的 hover 方式。

案例1:Linkedin 「我的」個人主頁

下面是Linkedin的一個例子。 以下是作者的個人資料頁面中的屏幕截圖。

可能是最全面的「無障礙設計」學習指南

△ Jesse’s LinkedIn profile banner

下面是鼠標 hover 時的效果:

可能是最全面的「無障礙設計」學習指南

△ His LinkedIn profile banner with hover states revealed

立刻出現了一些視覺提示,告訴我可以分別編輯這張card上的許多信息,包括姓名、職位、之前工作、教育經歷、個人頭像照片。

當我在某一項上 hover 時,那一項就變成藍色,告訴我它準備好被點擊了。

可能是最全面的「無障礙設計」學習指南

△ Title turns blue on hover.

這種做法不太符合「無障礙設計」原則。

下面,是為滿足「無障礙設計」做的一個改進方案。我在每一項后面都放上更小的鉛筆圖標,他們一直顯示。

可能是最全面的「無障礙設計」學習指南

△ One solution. Show smaller, gray pencils always for in-line editable fields.

當我在某一項上 hover 時,整條項目變藍。

可能是最全面的「無障礙設計」學習指南

△ Show the same blue row on hover and keyboard focus.

也許,多數設計師看到我的修改方案時,都會問:這會不會太重了啊?(“That’s kind of heavy, isn’t it?”)

也許是的。但這只是這個問題的其中一種解決辦法。

更進一步說,這只存在于我自己的 porfile page。一個人會花多少時間看自己的 LinkedIn profile?這種所謂的「感覺重」,和是全局的無障礙設計是同等重要的嗎?如果我們不喜歡加鉛筆圖標這種解決辦法,我們還可以想出其他什么解決方案呢?

案例2:Evernote 筆記列表

下面是另一個例子,Evernote。這是筆記列表。只有 hover 時,才會顯示 4 個操作圖標。

可能是最全面的「無障礙設計」學習指南

△ Evernote list

在這個案例中,我希望 4 個圖標常駐顯示在每條筆記 card 上。也許圖標可以是綠色,hover 時反色。

可能是最全面的「無障礙設計」學習指南

△ One solution to the hovers used in Evernote

這個解決方案也許還是會被評價「太重了」!

但請記住,我們并不只為設計師而設計,我們是為各種各樣的、有著不同需求、不同條件、不同電腦使用方式的用戶而做設計的。

7. 移動、閃爍的內容是否是可停止的?

界面上一直移動、滾動、閃爍超過5秒的內容,都應該可以被暫停、停止,或隱藏。

一般的,對于閃爍內容,每秒閃爍次數不宜超過3次。

8. 盲人用戶如何使用只能聊天的機器人(Chatbot)

這篇文章探討了這一問題:We need to talk about Accessibility on Chatbots,by:Caio Calado(2017.6.30)作者是一名 UX & Chatbot 設計師。

文章首先提出問題:How would a blind person use a chatbot? How would he or she interact wit it?

然后親身測驗了Google’s Allo、 Slack、 Facebook、 VoiceOver 等產品在 iOS 上的 chatbot,效果并不盡如人意。

進而提出:

If we want chatbots to be used by billions of people around the world, we need to make them accessible for everyone.

As an UX designer, I need to design in order to solve people’s needs and pains, not only and just for users’ goals.

如今,尤其像 Facebook 、 Google 、Twitter 等這樣的用戶遍布全球的公司,越來越關注無障礙設計,Caio Calado相信這一切在不久的將來終將會被改善,他說:

I don’t know how, but if anything… I am here to help as well.

四. 聽覺無障礙設計

「聽覺障礙」包括:聽不清/聽不到到界面發出的聲音。

設計要點:

  • 讓文本內容容易被理解,適當使用「文字替代」( text alternatives )。
  • 確保界面上的所有空間,在沒有聲音時(without sound),仍可正常使用。

五. 行動無障礙設計

「行動障礙」包括:不能操作鼠標、鍵盤、或觸屏。

設計要點:

  • 確保所有界面控件交互都可只通過鍵盤完成( functionally accessible from a keyboard )或者只使用鼠標;
  • 確保界面控件被輔助技術(assistive technologies)正確標記;這些用戶可能會使用諸如語音控制軟件(voice control software)和物理切換控制(physical switch controls)等技術,這些技術一般使用與屏幕閱讀器(screen reader)等其他輔助技術相同的API。

1. 提供可用鍵盤控制的「獲得焦點」顯示狀態

有些用戶在使用web 產品時,不方便使用鼠標,如果 web 產品可以僅通過鍵盤操作,會為其帶來更好的使用體驗。

設計師可以設計一種符合本網站風格、同時能提供明顯視覺線索的「獲得焦點」狀態指示,而不是僅僅使用瀏覽器的默認樣式。

Focus highlighting 應該只被用于頁面中的可交互元素,如輸入框、按鈕等。

可能是最全面的「無障礙設計」學習指南

△ Default visual focus states for Chrome and Firefox

但問題是許多網站并沒有自己設計一種「獲取焦點」狀態的視覺樣式,這對于以使用鍵盤為主要瀏覽方式的用戶來說,體驗很不好。主要因為效果太丑,而非不滿足「無障礙設計規范」。

可能是最全面的「無障礙設計」學習指南

△ While ugly, this isn’t “caused” by accessibility.

下面例子是 BBC 的,用「blue bar」指示哪一個tab是當前的「獲取焦點」狀態。

可能是最全面的「無障礙設計」學習指南

△ BBC 的「獲取焦點」狀態

下面是 Twitter 的例子,采用了3中方式結合的辦法,顯示「獲取焦點」狀態:

  • 默認藍框框。
  • icon由灰變綠。
  • tooltip。

提供了充足的視覺指示。

可能是最全面的「無障礙設計」學習指南

△ Twitter 的「獲取焦點」狀態

2. 彈窗

使用彈窗時注意,焦點元素要在彈窗內,而非在彈窗背后。

可能是最全面的「無障礙設計」學習指南

左邊錯誤做法:用戶沒法與彈窗交互;

右邊正確做法:焦點落在2個按鈕上,用戶可選擇相應操作,或者關閉彈窗。

3. hover 時的焦點狀態

如果一個元素需要hover 才能顯示更多操作,那么當鍵盤控制焦點落在該元素上時,要顯示出hover 觸發的更多操作。(可以和前文 「1.6 別讓用戶到處 hover 才能找到答案」結合著看)

好范例:facebook。

可能是最全面的「無障礙設計」學習指南

△ Facebook 的「獲取焦點」狀態

keyboard only users 把焦點落在 「like」上時,會顯示出 hover 時展示的更多表情。

反例:Product Hunt。焦點落在「share」「save」控件上時,不顯示任何hover觸發的更多操作。

可能是最全面的「無障礙設計」學習指南

△ Product Hunt 的「獲取焦點」狀態,沒展示出更多操作

下面是正誤兩種做法的比較:

可能是最全面的「無障礙設計」學習指南

左邊錯誤做法:Focus states 完全忽視 hover actions,直接跳到下一個 focus element。

右邊正確做法:Focus states 允許用戶與hover 觸發的動作交互。

還有一個比較好的例子是 Gmail:

可能是最全面的「無障礙設計」學習指南

△ Gmail 的「獲取焦點」狀態,顯示出更多操作

每個條目在「焦點狀態」時:

  • 都有特定的、明顯的狀態區分(左側的 blue bar)。
  • hover 時的更多操作,在「焦點狀態」時自動顯示。
  • 只有可操作控件有「焦點狀態」。

4. 快捷直達內容的操作

對于僅用鍵盤的用戶,如果每次都讓他們依次選中每個控件才能到達內容,使用起來是很痛苦的。

比如這個blogging 平臺:

可能是最全面的「無障礙設計」學習指南

△ Medium 早期首頁

比較好的做法是在最開始,提供一個捷徑,讓焦點直接跳轉至內容。

比如 AirBnB 這樣:

可能是最全面的「無障礙設計」學習指南

△ Airbnb 首頁

左邊:獲得焦點之前的普通狀態。

右邊:激活「獲得焦點」在最開始提供一個選項,直接跳轉至內容,無需依次路過每一個tab菜單。

5. 重新獲得焦點的場景(re-focus)

當一個控件從界面上被刪除后,焦點應該顯示在「周圍與被刪除相關」的控件上。

不好的做法是刪除一個元素后,讓焦點從當前元素消失,回到頁面頂部。這樣的話,用戶得重新走一遍 focus 從頂部移動到當前位置的過程。

可能是最全面的「無障礙設計」學習指南

左邊錯誤做法:的刪除「1」后,焦點消失。

右邊正確做法:刪除「1」后,焦點顯示在「2」上。

6. 保持使用的一致性

這是「無障礙設計」中一個很重要的問題。

詳細可參考 W3C’s Authoring Practices for Design Patterns有做詳細解釋。這是關于如何創建許多常見設計組件的「無障礙設計」指南,包括菜單、對話框、自動完成內容、樹形結構等。每種組件模式都有一套相應的 HTML 語言、鍵盤操作,和 ARIA 屬性。 ARIA 屬性說明了用戶如何使用鍵盤與屏幕上的組件交互。

自動完成輸入模式(autocomplete):用戶在輸入框輸入一些內容,下面自動顯示一列經過篩選的相關結果。用戶可以用上下箭頭或者鼠標定位或選擇列表中的一個項目。

下面看下「自動完成輸入」的例子:

可能是最全面的「無障礙設計」學習指南

△ A simple autocomplete typeahead

下面這種是前面加了 icon 的自動完成輸入顯示的列表:

可能是最全面的「無障礙設計」學習指南

△ icon 被用來強調區別

下面是個混亂的自動完成模式案例:用戶不僅可以從過濾的列表中選擇一個項目,還可以通過點擊「鉛筆」或「垃圾桶」圖標來編輯或刪除每個列表項。 這兩個按鈕的添加讓「自動完成」輸入模式變得混亂。

可能是最全面的「無障礙設計」學習指南

△ An autocomplete with a hidden feature set that cannot be communicated to assistive technology through standard techniques.

問題主要因為:打亂了自動完成輸入模式的鍵盤使用行為。「選擇」+「操作」的雙重操作容易造成使用混淆,也不便于鍵盤控制。

相似的規則也適用于menu。

下面的2個例子中,右邊的才是真正的 menu,左邊的其實是個 non-modal dialog(非模態對話框)。(根據 W3C’s WAI)

可能是最全面的「無障礙設計」學習指南

Menu 是一種 為用戶提供一列選擇的 widget。如果我們為每一行加進多重操作(像左邊例子),那它就不再是 menu 了。這也會改變鍵盤的操作行為,從單純使用 arrow key,到 還需使用 tab key;同時也會改變鍵盤獲取焦點的處理方式,比如當 dropdown 收起后,鍵盤獲取焦點的顯示位置就不同。

若能弄清兩者區別,以及對用戶體驗的影響,非模態對話框也可以做到滿足「無障礙設計」標準。理解一個微小的設計變化,如何改變用戶交互模式,會幫助你為自己的產品選擇合適的交互模式。

六. 認知無障礙設計

「認知障礙」意味著用戶可能需要輔助技術(assistive technologies)來幫助他們閱讀文本,因此文本替代方案( text alternatives)的存在非常必要。

設計要點:

  • 避免重復或閃爍的顯示方式,因為這可能會為認知障礙用戶造成使用不便(issues)。
  • 給用戶留出充足的時間操作( repetitive )。

七. 「無障礙設計」自查清單

Is your UI component accessible?

  • Visual:界面上的控件、文字的對比度是否滿足 WCAG 最低標準?界面去掉顏色后是否可以正常使用? 確保你的 UI 組件可以被不能辨識顏色的用戶使用。 一個叫 SEE 的 Chrome 擴展程序可以模擬色盲用戶看到的界面,Daltonize extension 也有類似功能。
  • Visual:界面組件可以在「高對比度模式」下工作嗎?現在時下常用的操作系統都支持高對比度模式。「High Contrast」是一個 Chrome extension ,可以模擬測試。
  • Visual:可以用「屏幕閱讀器」使用所有 UI 控件嗎?是否提供了所有可見文本信息的 文本替代方案(text alternatives )?你用 ARIA 增加了語義信息嗎?( semantic information)
  • Hearing:你的用戶界面組件可以無聲地工作嗎? 關閉揚聲器全工程使用測試下。
  • Motion:所有 UI 控件,是否可以只通過鍵盤操作?是否能避免用戶陷入「焦點陷阱」(focus traps)?能否對鍵盤操作做出合適響應?

最后

Web 的一大作用就是更好地實現了人與人之間的交流與合作,「無障礙設計」在其中扮演著重要的角色。

也許你覺得在你的設計中要考慮這些種種規則,限制了你的創造力。

但如果這些規范限制將你的創造力推向極限,你就很有可能會做出既美觀,同時還能滿足更廣泛人群使用的設計。如果關注點正確,你就會發現在任何挑戰面前,都可以去尋找一系列解決辦法,去滿足主管、營銷團隊、Dribbble followers、等所有用戶包括殘疾人的需求。

“Do the hard work so our users don’t have to”, 是 Gov.UK platform 最初的設計原則之一。

「英雄所見略同」的還有這段話:

Doing the hard work to make a service work well for everyone will make your service better? ?for everyone. ——Tom Loosemore, Group Director of Digital Services, The Co-Op

也許你目前沒有足夠的時間和預算來做「無障礙設計」,但只要你把「無障礙設計」當做你日常工作要考慮的標準的一部分,你就會驚喜地發現,你其實能夠滿足很多無障礙設計標準。

將問題分解為可實施的小任務,可以一步步接近終極目標。比如,使用「對比度測試工具」測試你的色板,進而選用對比度更科學的顏色;寫容易理解的文字;使用容易看清的字體;把內容規劃得清清楚楚,讓不同模塊之間一致連貫;盡量減少設計中的雜亂等分散注意力的東西;寫有用的說明文案……

改善所有你能改善的,影響團隊中的其他人,很快,你就會感覺到你的產品越來越好。不要低估自己所能做的改變。

Doing something is always better than doing nothing, every small change simply means your product is better optimised, with more people able to have a good experience with it. ——Ian Hamilton, Accessibility Specialist

「服務至上!如何做無障礙設計」

================明星欄目推薦================

優優教程網 UiiiUiii.com 是優設旗下優質中文教程網站,分享了大量PS、AE、AI、C4D等中文教程,為零基礎設計愛好者也準備了貼心的知識樹專欄。開啟免費自學新篇章,按照我們的專欄一步步學習,一定可以迅速上手并制作出酷炫的視覺效果。

設計導航:國內人氣最高的設計網址導航,設計師必備:http://hao.uisdc.com

收藏 72
點贊 8

復制本文鏈接 文章為作者獨立觀點不代表優設網立場,未經允許不得轉載。