跳到主要內容

Grid

Demo 與 Accessibility Tree

共用檔案

以方向鍵移動,按空白鍵選取整列。

檔案名稱擁有者最後更新
無障礙檢測報告.pdf設計組10 月 9 日
元件規格.xlsx前端組10 月 6 日
使用者訪談逐字稿.docx研究組9 月 30 日

Accessibility Tree

觀察對象:Grid 容器。

元素目前不在無障礙樹中。

Accessibility Tree

觀察對象:目前可聚焦的儲存格。

元素目前不在無障礙樹中。

Accessibility Tree

觀察對象:第一個被選取的列。 下列是操作之後會量到的值。

Role
row
Status
aria-selected=true
Name
無障礙檢測報告.pdf 設計組 10 月 9 日
Description
(無 accessible description)

鍵盤操作

按鍵行為
Tab移入與移出整個 Grid。不論幾列幾欄,整個表格只佔一個停留點 —— 九格資料若各佔一個停留點,鍵盤使用者光是經過這張表就得按九次。
← / → / ↑ / ↓在儲存格之間逐格移動。標頭列也走得到,使用者才能回頭確認欄位名稱。到邊界就停住,不繞到下一列。
Home / End移到目前這一列的第一格或最後一格。
Ctrl + Home / Ctrl + End移到整個 Grid 的第一格或最後一格。
Space選取或取消選取焦點所在的整列。焦點不會移動 —— 選取與移動是兩件事。

ARIA 屬性

屬性值用途
rolegrid原生 <table> 的隱含角色是 table,必須明寫 grid 才換成互動語意。換過去之後螢幕閱讀器會把方向鍵交還給頁面,它自己的表格瀏覽模式就不再接管 —— 所以方向鍵一定要自己實作,不能只改角色。
aria-labelledby可見標題的 idGrid 的名稱,指向可見標題「共用檔案」。
aria-describedby操作說明的 id名稱之後補充播報的說明。Grid 的操作方式與一般表格不同,這句話讓使用者知道該按方向鍵而不是 Tab。
role(列與儲存格)row / columnheader / gridcellGrid 內的結構角色。用原生 <tr>、<th>、<td> 時瀏覽器會映射成這些角色,這裡明寫是為了讓結構一眼看得出來。
aria-selectedtrue / false選取狀態。這個 Grid 的選取單位是一整列,所以放在 <tr> 上。若選取單位是儲存格就放在儲存格上;選取整欄時,該欄的每一格都要標。
aria-readonly(不使用)這個 Grid 沒有編輯功能,所以不標。標上去反而是錯的訊息 —— 它的意思是「這裡本來可以編輯,但現在不行」,而不是「這張表是唯讀資料」。可編輯的 Grid 才用它,而且只標在禁止編輯的那些儲存格上。
tabindex0 / -1roving tabindex:只有一格是 0,其餘都是 -1。移動焦點時換掉那個 0,Tab 才會只停一次。

WCAG 對應

  • 用原生表格元素搭配 scope,每個儲存格與它的欄標頭產生程式可判斷的關聯。

  • 等級 A2.1.1 鍵盤

    移動與選取都能只用鍵盤完成。

  • 整個 Grid 只佔一個 Tab 停留點,內部移動交給方向鍵。

  • 聚焦的儲存格有橘色內嵌外框,與選取列的淺綠底色分得出來。

  • Grid 有名稱與補充說明,列與儲存格各有正確角色,選取狀態以 aria-selected 表達。

APG 規則

  • 頁面結構

    Grid 容器具有 grid 角色語意

    互動式 Grid 容器具有 role=grid;若以 HTML table 實作 Grid,仍須在 table 元素設定 role=grid。

  • 元件語意

    Grid 具有無障礙名稱

    Grid 以 aria-labelledby 關聯可見標題;沒有可見標題時,以 aria-label 提供名稱。

  • 頁面結構

    Grid 具有無障礙補充說明,且由標題或補充說明提供

    若 Grid 有標題或補充說明,aria-describedby 指向包含該內容的元素。

  • 元件語意

    Grid 正確呈現選取狀態

    選取儲存格、列或欄時,已選取的儲存格或列具有 aria-selected=true;選取整欄時,該欄的每個儲存格都具有 aria-selected=true。

  • 元件語意

    Grid 正確省略或呈現唯讀狀態

    沒有編輯功能的 Grid 不使用 aria-readonly;可編輯 Grid 若使用此屬性,只在禁止編輯的儲存格設為 true,全部唯讀時才可設在整個 Grid。

  • 焦點管理

    Grid 在頁面 Tab 順序中只有一個進入點

    使用 Tab 導覽頁面時,整個 Grid 同一時間只有一個內部元素位於頁面 Tab 順序。

  • 鍵盤操作

    Grid 儲存格內容可由鍵盤到達

    每個資料儲存格本身可聚焦,或包含可聚焦元素;非互動式的列標題與欄標題不必設為可聚焦。

  • 鍵盤操作

    Data Grid 支援向左鍵與向右鍵逐格移動

    在 Data Grid 內按向左鍵與向右鍵時,焦點逐格水平移動;到達每列最左格或最右格時不再移動。

  • 鍵盤操作

    Data Grid 支援向上鍵與向下鍵逐格移動

    在 Data Grid 內按向上鍵與向下鍵時,焦點逐格垂直移動;到達每欄最上格或最下格時不再移動。

  • 鍵盤操作

    Data Grid 支援 Page Up 與 Page Down 導覽

    在 Data Grid 內按 Page Up 與 Page Down 時,焦點依設計跨多列移動;到達第一列或最後一列時不再移動。

  • 鍵盤操作

    Data Grid 的 Home 與 End 移到目前列首尾

    在 Data Grid 任一儲存格按 Home 與 End 時,焦點分別移至目前列的第一格與最後一格。

  • 鍵盤操作

    Data Grid 的 Control+Home 與 Control+End 移到整體首尾

    在 Data Grid 任一儲存格按 Control+Home 與 Control+End 時,焦點分別移至第一列第一格與目前已載入範圍的最後一格。

  • 鍵盤操作

    Layout Grid 支援向左鍵與向右鍵逐格移動

    在 Layout Grid 內按向左鍵與向右鍵時,焦點依對應方向逐格水平移動;若支援換列,移動順序須符合可預期的閱讀順序,否則到達 Grid 邊界時不再移動。

  • 鍵盤操作

    Layout Grid 支援向上鍵與向下鍵逐格移動

    在 Layout Grid 內按向上鍵與向下鍵時,焦點依對應方向逐格垂直移動;若支援換欄,移動順序須符合可預期的閱讀順序,否則到達 Grid 邊界時不再移動。

  • 鍵盤操作選做

    Layout Grid 支援 Page Up 與 Page Down 導覽

    在 Layout Grid 內按 Page Up 與 Page Down 時,焦點依設計跨多列移動;到達第一列或最後一列時不再移動。

  • 鍵盤操作

    Layout Grid 的 Home 與 End 移到合理的列首尾

    在 Layout Grid 內按 Home 與 End 將焦點移至目前列的第一格與最後一格;在支援的單欄或短列版面中,也可移至 Grid 的第一格與最後一格。

  • 鍵盤操作選做

    Layout Grid 支援 Control+Home 與 Control+End

    在 Layout Grid 內按 Control+Home 與 Control+End 時,焦點分別移至第一格與最後一格。

  • 鍵盤操作選做

    Grid 選取快捷鍵會依預期更新選取範圍

    若 Grid 提供選取快捷鍵,Control+Space 選取焦點所在欄、Shift+Space 選取焦點所在列、Control+A 選取全部儲存格,Shift 加方向鍵則向該方向延伸一格選取範圍,過程中不會意外失去焦點。

  • 鍵盤操作

    Grid 可用 Enter 或 F2 進入儲存格互動模式

    儲存格含有可編輯內容或需要 Grid 導覽鍵的元件時,Enter 或 F2 將焦點移入編輯欄位或第一個元件並停用 Grid 導覽;再按 F2 會恢復 Grid 導覽。單行編輯欄位再按 Enter 時,會恢復 Grid 導覽或移到相鄰儲存格的輸入欄位。

  • 鍵盤操作選做

    Grid 可由輸入字元開始編輯儲存格

    在可編輯儲存格中輸入英數字元時,焦點移至其輸入欄位並輸入該字元。

  • 鍵盤操作

    Grid 可用 Escape 回復逐格導覽

    Grid 導覽因儲存格互動而停用時,按下 Escape 會恢復 Grid 導覽。

  • 鍵盤操作

    Grid 儲存格內的元件可由鍵盤操作

    在儲存格互動模式中,若儲存格含多個元件,向右鍵或向下鍵移到下一個元件,向左鍵或向上鍵移到上一個元件,並可選擇循環;否則方向鍵交由目前元件處理。Tab 與 Shift+Tab 移到下一個及上一個元件,並可選擇在儲存格或 Grid 內循環。

  • 焦點管理選做

    Grid 導覽直接聚焦不使用方向鍵的單一元件

    Grid 儲存格只有一個不以方向鍵操作的可聚焦元件(如連結或按鈕)時,使用方向鍵進入該格會直接聚焦該元件。

  • 焦點管理選做

    Grid 導覽聚焦僅含文字或單一圖像的儲存格

    Grid 儲存格僅含文字或單一圖像時,gridcell 本身可取得焦點。