日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
前端無障礙開發(fā)指南

作者 |  孫郁儼

專注于為中小企業(yè)提供網(wǎng)站設(shè)計、做網(wǎng)站服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)三都免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了超過千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

The power of the Web is in its universality. Access by everyone regardless of disability is an essential aspect," said Tim Berners-Lee, W3C Director and inventor of the World Wide Web.

30年前,Tim Berners-Lee 在歐洲核子研究中心創(chuàng)建了第一個 Web 網(wǎng)頁,宣告了萬維網(wǎng)的誕生。自此,萬維網(wǎng)就承載著開放平等的愿景。

Accessibility——無障礙設(shè)計&信息無障礙(也簡稱為 A11y),雖然常常會被解釋為”為殘障人士服務(wù)“,但其無障礙設(shè)計的核心在于為所有人提供同等的體驗。我們每個人都有可能在某些時刻成為失能者,這稱為場景性殘疾(situational disability & temporary disability),比如受傷骨折后,暫時失去了部分活動能力。又比如被強光照射時,看不清楚事物,在嘈雜地鐵中的聽力產(chǎn)生障礙等等。

根據(jù) W3C 組織的定義,Web accessibility 意味著每個人都可以感知、理解并與 Web 交互,甚至為 Web 做出貢獻。中國工信部也指出,信息無障礙是指通過信息化手段彌補身體機能、所處環(huán)境等存在的差異,使任何人(無論是健全人還是殘疾人,無論是年輕人還是老年人)都能平等、方便、安全地獲取、交互、使用信息。

但在萬物互聯(lián)的當(dāng)下,盡管我們的衣食住行早已與網(wǎng)絡(luò)世界息息相關(guān),互聯(lián)網(wǎng)并未成一個平等的,人人都可以訪問的世界。根據(jù)2022 年 The WebAIM Million 統(tǒng)計報告,在對 100萬 個網(wǎng)站首頁進行無障礙分析后,得到的結(jié)果卻差強人意:

  • 在 100 萬個首頁中,一共檢測到 50,829,406 項非重復(fù)的無障礙錯誤,平均每個首頁有50.8個錯誤。
  • 96.8% 的首頁檢測到了 WCAG 2 錯誤,未能達到 WCAG 2的標準,盡管現(xiàn)在最新的標準是WCAG 2.1
  • 在殘障用戶的頁面訪問流程中,每交互 19 個首頁元素,就可能遇到一個無障礙錯誤

圖源:2022 年 The WebAIM Million 報告

在這些頁面無障礙錯誤中,96.5%的錯誤歸屬于以下五類:

作為前端開發(fā)者,我們要如何把關(guān)頁面的無障礙功能呢?

在前端開發(fā)的視角中,每一個 Web 應(yīng)用都可以拆解為 HTML、CSS 和 JavaScript。HTML 會經(jīng)過 HTML Parser 將 HTML 結(jié)構(gòu)轉(zhuǎn)換成 DOM Tree;CSS 會經(jīng)過 CSS Parser 將 CSS 轉(zhuǎn)換成 CSSOM Tree。最終,瀏覽器根據(jù) DOM Tree 和 CSSOM Tree 構(gòu)建出最終的 Render Tree。

對于無障礙 Web 應(yīng)用,除了包含 DOM 和 CSSOM 之外,將包含 AOM (Accessibility Tree,可訪問性樹)。AOM 可訪問性樹和 DOM 樹平行存在。簡單來說,可訪問性樹是 DOM 樹的一個子集。每個需要暴露給 ATs 輔助技術(shù)的 DOM 元素都對應(yīng)一個在可訪問樹中存在的無障礙對象。定義 AOM 實現(xiàn)的標準是  WAI-ARIA(Web Accessibility Initiative – Accessible Rich Internet Application),即可訪問的互聯(lián)網(wǎng)富應(yīng)用標準,致力于解決應(yīng)用的可訪問性問題,它與HTML5 標準同屬于 W3C 組織。Web 應(yīng)用的 AOM 也并非遙不可及,打開 Chrome 瀏覽器的 Devtools,我們即可查看頁面的 AOM 結(jié)構(gòu)。

在了解了無障礙的基本概念后,我們分別從 HTML、開發(fā)框架以及 CSS等角度,一起來看看無障礙頁面的實現(xiàn)方式吧。

編寫 HTML 時需要考慮的 Web Accessibility

就像瀏覽器引擎依賴 HTML 結(jié)構(gòu)以構(gòu)建頁面 UI 骨架,ATs 設(shè)備也依賴 HTML 結(jié)構(gòu)來構(gòu)建頁面的 AOM 可訪問性樹。所以語義化的 HTML 對于實現(xiàn) Web 應(yīng)用無障礙至關(guān)重要,因為原生的 HTML 標簽中包含了構(gòu)建 AOM 的必要元數(shù)據(jù)。

參考上圖,ATs 設(shè)備完全可以正確地渲染滑動輸入框,即便我們沒有在HTML 標簽上添加 WAI-ARIA 屬性。但我們在開發(fā)時往往會忽略 HTML 元素的實際語意,而更多采用無語意的  

 和  標簽 (
 和  之外的近 104 個 HTML 標簽都具有語義信息)。因為這兩個標簽沒有默認樣式,足夠簡單,就像白紙一樣可以隨意畫上 CSS 樣式。但這樣的標簽,對于 ATs 設(shè)備來說,就是災(zāi)難。

以上圖為例,對于  標簽,讀屏軟件將讀出 “Button, foo",告知用戶當(dāng)前元素是按鈕,包含文字 foo。但對于 

FOO
 標簽,讀屏軟件只能讀出 “foo”,并不能提示當(dāng)前元素是一個可交互的按鈕。雖然我們也可以通過設(shè)置 WAI-ARIA 屬性為 HTML 標簽增添無障礙語意,比如 
FOO
,但這樣會平添許多額外的工作,也增加了出錯的機率:根據(jù) The WebAIM Million 統(tǒng)計報告,包含 ARIA 的頁面比不使用 ARIA 的頁面,檢測出無障礙性錯誤的可能高 70%。

通過 HTML 提升頁面可訪問性

規(guī)則 1:結(jié)構(gòu)和樣式分離

在社區(qū)中一直都有人在提倡 CSS裸奔日(CSS Naked Day),編寫 HTML 時不要基于 UI 視覺效果(CSS 樣式),而是基于 UI 的頁面結(jié)構(gòu),可以確保 HTML 的語義完善,增強頁面可訪問性。

相關(guān)瀏覽器插件:HeadingsMap - Chrome Web Store

規(guī)則 2:只在必要時使用 ARIA

WAI-ARIA 的全稱是 Accessible Rich Internet Applications,簡稱 ARIA,是 W3C規(guī)范之一。ARIA 允許 Web 開發(fā)者創(chuàng)建只有 ATs 技術(shù)(比如屏幕閱讀器)可以看到的內(nèi)容(屬性),用以實現(xiàn) HTML 無法達成的無障礙功能,比如:

  • 增強交互式控件的可訪問性,比如下拉菜單、彈窗,滑塊等
  • 為頁面結(jié)構(gòu)定義有用的地標
  • 定義動態(tài)更新的“活動區(qū)域”
  • 改善鍵盤可訪問性和交互性

ARIA 表現(xiàn)為 HTML 的屬性,確定了元素的 ARIA 角色、狀態(tài)和屬性。這些信息幫助 ATs 技術(shù)更好地理解 Web 頁面,確保用戶與頁面元素的交互。一般情況下,ARIA 不會影響 Web 頁面的渲染,也不會影響鼠標或鍵盤用戶的行為,只有使用輔助技術(shù)的用戶才能感知到 ARIA。開發(fā)人員隨意使用 ARIA 所導(dǎo)致的問題,對于頁面無障礙功能往往是致命的,而且難以察覺。

但 ARIA 永遠無法替代語義化 HTML 標簽,NO ARIA is better than bad ARIA。請優(yōu)先考慮語義最貼近的 HTML 標簽,只在必要時使用 ARIA。

相關(guān)瀏覽器插件:

  • Visual ARIA - Chrome Web Store
  • Landmark Navigation via Keyboard or Pop-up - Chrome Web Store

規(guī)則 3:提升表單結(jié)構(gòu)的包容性

(1) 采用 

 為表單項分類

   當(dāng)表單分為不同板塊時,我們可能會使用 

 元素實現(xiàn)表單項的樣式板塊劃分,但這樣的劃分并不利于無障礙設(shè)備獲得表單項信息,可以使用進行替換。

(2) 正確使用 label,為  標簽設(shè)置對應(yīng)的 label

在實現(xiàn)表單時,我們往往會通過 placeholder 來提示當(dāng)前表單項的填寫內(nèi)容。這樣的設(shè)計會導(dǎo)致當(dāng) input 得到焦點時,placeholder 自動消失,造成用戶無法感知當(dāng)前表單項的內(nèi)容。我們可以使用 label 充當(dāng) placeholder,這樣的交互方式也稱為 Float Label Pattern

(3) 盡可能使用原生的表單元素

 在制作表單組件時,我們往往會出于實現(xiàn) UI 樣式的要求,采用 

 替代原生的表單元素。盡管這些表單組件在視覺和功能上滿足了 UI 要求,但它們并未實現(xiàn)原生表單元素的無障礙功能。

(4) 為表單元素設(shè)置原生的校驗屬性

required、minlength、pattern 等表單的原生校驗屬性,不但可以滿足正常的表單校驗需求,也具有更好的無障礙支持

規(guī)則 4:注意頁面的焦點管理,允許用戶僅通過鍵盤完成交互

很多行動不便的用戶依賴鍵盤操作,靠 Tab 鍵和方向鍵等瀏覽網(wǎng)。因此我們在構(gòu)建 Web 應(yīng)用的時候要注意:

  • 確保頁面所有內(nèi)容都可以通過鍵盤訪問
  • 盡可能地提供鍵盤快捷鍵交互
  • 避免設(shè)計只在鼠標 hover 時才會被激活的元素

一些 HTML 的原生標簽具備可聚焦屬性,也被稱為可聚焦元素。這些原生 HTML 元素,天然存在于頁面 Tab 鍵順序內(nèi),內(nèi)置了鍵盤事件處理,可以通過 Tab 鍵聚焦,并且獲得焦點時有可見的焦點指示器(往往是顯眼的藍色框框)。但對于無法聚焦的元素,我們可以設(shè)置元素的 tabindexlace 屬性,使元素可聚焦。

如果想給當(dāng)前元素生成快捷鍵的話,可以給元素設(shè)置 accesskey 屬性。但使用 accesskey也需注意以下問題:

  • accesskey 值可能與系統(tǒng)或瀏覽器快捷鍵或輔助技術(shù)功能相沖突
  • 當(dāng)考慮頁面國際化時,某些 accesskey 值可能不會出現(xiàn)在一些鍵盤上
  • 依賴于數(shù)值的 accesskey 可能會讓具有認知障礙的用戶感到困惑,因為數(shù)值和觸發(fā)的功能并沒有邏輯聯(lián)系
  • 如果沒有告知用戶快捷鍵的存在,那么可以會造成用戶誤觸

相關(guān)瀏覽器插件:

  • taba11y - Chrome Web Store
  • NerdeFocus - Chrome Web Store

規(guī)則 5:定義文檔的語言類型

在  標簽元素上設(shè)置正確的 lang 屬性。如果你的頁面沒有顯式設(shè)置當(dāng)前頁面所使用的語言,那么讀屏軟件將無法選擇匹配的語音配置文件和字符集,讀屏軟件讀出的頁面內(nèi)容是亂碼。所以,為了確保頁面的內(nèi)容正確,請務(wù)必為  元素指定有效的BCP 47語言。

規(guī)則 6:為  添加 alt 屬性,明確鏈接和按鈕的信息

往往一張表情包圖片就可以抵千言萬語,但對于讀屏軟件來說,讀取  標簽的有效信息,只能靠 alt 屬性。所以不要忘記為  標簽添加描述性的 alt 屬性。如果圖片只是為了裝飾效果,那么可以考慮將  標簽 替換為 CSS 背景圖。

與 標簽類似,讀屏軟件對于  和