PrimeVue 符合 WCAG 2.1 AA 等級規範,詳細資訊請參考各元件的無障礙功能文件。
根據世界衛生組織的統計,世界上有 15% 的人口患有某種程度的殘疾。因此,在任何情況下,無障礙功能(例如輪椅使用者的坡道或帶字幕的多媒體)對於確保任何人都可以使用內容至關重要。
殘疾類型多樣,因此您需要清楚了解您的受眾以及他們如何與所建立的內容互動。主要有四個類別:
失明、低視力或色盲是常見的視覺障礙類型。螢幕放大鏡和色盲模式通常是瀏覽器的內建功能,而對於依賴螢幕閱讀器的人來說,頁面開發人員需要確保內容可供閱讀器讀取。常用的閱讀器有 NVDA 、 JAWS 和 ChromeVox 。
失聰或聽力損失是指完全或部分無法聽到聲音。聽覺障礙人士使用輔助設備,但在與網頁互動時可能不夠。常見的實作方式是為包含音訊的內容提供文字替代方案、文字稿和字幕。
有行動障礙的人士因肢體喪失、癱瘓或其他各種原因而導致與移動相關的殘疾。頭部指標等輔助技術是一種與螢幕互動的設備,而鍵盤或觸控板仍然是無法使用滑鼠的人的解決方案。
認知障礙的範圍更廣,包括有學習障礙、憂鬱症和閱讀障礙的人。設計良好的內容也能為沒有殘疾的人帶來更好的使用者體驗,因此針對認知障礙進行設計可以為任何使用者帶來更好的設計。
藉由輔助技術正確的頁面結構是無障礙網路內容的核心要素。HTML 基於無障礙基礎,表單控制項預設可透過鍵盤使用,語意 HTML 更容易讓螢幕閱讀器處理。
WCAG 指的是 Web Content Accessibility Guideline(網路內容無障礙指南),這是由 W3C (World Wide Web Consortium) 的 WAI (Web Accessibility Initiative) 管理的標準。WCAG 包含使網路內容更具無障礙性的建議。PrimeVue 元件旨在在不久的將來實現高水準的 WCAG 合規性。
全球各國也有關於網路無障礙性的政府政策。其中最知名的有美國的 Section 508 和歐盟的 Web Accessibility Directive。
應優先使用原生表單元素,而不是用於其他目的(如呈現)的元素。例如,下面的按鈕由瀏覽器呈現為表單控制項,可以透過 Tab 鍵取得焦點,並且可以使用空白鍵觸發。
<button @click="onButtonClick(event)">Click</button>
另一方面,使用 div 的花俏 css 型按鈕沒有鍵盤或螢幕閱讀器支援。
<div class="fancy-button" @click="onButtonClick(event)">Click</div>
除了使用 keydown 來恢復鍵盤支援外,還需要 tabindex 才能讓 div 元素可存取。為了避免超載和實作瀏覽器已提供的功能,應優先使用原生表單控制項。
<div class="fancy-button" @click="onClick(event)" @keydown="onKeyDown(event)" tabindex="0">Click</div>
表單元件必須與另一個描述表單元素用途的元素相關。這通常是透過 label 元素實現的。
<label for="myinput">Username:</label>
<input id="myinput" type="text" name="username" />
HTML 提供了各種元素來組織網頁上的內容,螢幕閱讀器可以識別這些元素。優先使用語意 HTML 獲得良好的語意,可以為閱讀器提供開箱即用的支援,而當使用帶有類別的常規 div 元素時,這是無法實現的。考慮以下範例,這些範例對閱讀器來說沒有太多意義。
<div class="header">
<div class="header-text">Header</div>
</div>
<div class="nav"></div>
<div class="main">
<div class="content">
</div>
<div class="sidebar">
</div>
</div>
<div class="footer">
</div>
可以使用具有內建螢幕閱讀器支援的語意元素來實現相同的佈局。
<header>
<h1>Header</h1>
</header>
<nav></nav>
<main>
<article></article>
<aside></aside>
</main>
<footer>
</footer>
ARIA 指的是「Accessible Rich Internet Applications(無障礙富網際網路應用程式)」,它是一套用於填補語意 HTML 不足之處的工具。這些情況主要與富 UI 元件/Widget 相關。雖然過去幾年來瀏覽器對日期選擇器或顏色選擇器等富 UI 元件的支援有所改進,但許多網頁開發人員仍然利用他們自己或由其他專案(如 PrimeVue)建立的從標準 HTML 元素衍生的 UI 元件。這些類型的元件必須提供鍵盤和螢幕閱讀器支援,後者是利用 WAI-ARIA 的地方。
ARIA 由角色、屬性和特性組成。角色定義元素的主要用途,例如 checkbox、dialog、tablist,而狀態和特性定義元素的元數據,例如 aria-checked、aria-disabled。
考慮以下原生核取方塊的案例。它具有內建的鍵盤和螢幕閱讀器支援。
<input type="checkbox" value="Prime" name="ui" checked>
具有 css 動畫的花俏核取方塊可能看起來更吸引人,但可能會缺乏無障礙功能。下面的核取方塊可能會顯示帶有動畫的已勾選字型圖示,但它不可使用 Tab 鍵切換,無法使用空格鍵勾選,也無法由閱讀器讀取。
<div class="fancy-checkbox">
<i class="checked-icon" v-if="checked"></i>
</div>
一種替代方法是為閱讀器使用 ARIA 角色,並為鍵盤支援使用 JavaScript。請注意,使用 aria-labelledby 來替代帶有 for 的 label 標籤。
<span id="chk-label">Remember Me</span>
<div class="fancy-checkbox" role="checkbox" aria-checked="false" tabindex="0" aria-labelledby="chk-label"
@click="toggle" @keydown="onKeyDown(event)">
<i class="checked-icon" v-if="checked"></i>
</div>
但是,最佳做法是結合語意 HTML 以實現無障礙性,同時保持 UX 的設計。這種方法涉及隱藏原生核取方塊以實現無障礙性,並使用 JavaScript 事件來更新其狀態。請注意使用 p-hidden-accessible,它可以將元素從使用者隱藏,但不會從螢幕閱讀器中隱藏。
<label for="chkbox">Remember Me</label>
<div class="fancy-checkbox" @click="toggle">
<input class="p-hidden-accessible" type="checkbox" id="chkbox" @focus="updateParentVisuals" @blur="updateParentVisuals"
@keydown="onKeyDown(event)">
<i class="checked-icon" v-if="checked"></i>
</div>
一個可運作的範例是 PrimeVue 核取方塊,它可使用 Tab 鍵切換、可使用鍵盤存取,並且符合螢幕閱讀器的要求。它不依賴 ARIA 角色,而是依賴隱藏的原生核取方塊。
網頁上的色彩應盡量達到至少 4.5:1 的對比度,並考慮選擇不會引起振動的色彩。
背景和前景內容之間的色彩對比度應足夠高,以確保可讀性。下面的範例顯示了良好和不良範例的兩種情況。
色彩振動是由於選擇彼此可見度較低的色彩而導致的運動錯覺。在選擇色彩組合時需要謹慎,以避免振動。
在深色設計方案中使用高飽和色彩時應避免使用,因為它們會導致眼睛疲勞。相反,應優先使用去飽和色彩。