跳到主要內容

Checkbox

Demo 與 Accessibility Tree

通知方式

至少選擇一種,否則我們無法通知你。

每週最多一封,隨時可取消。

Accessibility Tree

觀察對象:外層的核取方塊群組。

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

Accessibility Tree

觀察對象:「全部選取」這個三態核取方塊。

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

鍵盤操作

按鍵行為
Space切換勾選狀態。
Tab依序移到群組中的每一個核取方塊。

ARIA 屬性

屬性值用途
rolecheckbox用原生 <input type=checkbox> 即隱含此角色,同時免費取得 Space 鍵、勾選狀態與 label 關聯。
(名稱)<label>名稱來自關聯的 label。用 label 包住或 htmlFor 指向,點文字也能切換 —— 那同時把點擊範圍從 16px 的小方塊擴大到整行,是動作控制受限者的實質差別。
aria-checkedmixed第三態。部分勾選只存在於 DOM 的 indeterminate property,寫不進 HTML 屬性裡,所以要另外補這個值才進得了無障礙樹。
(結構)fieldset + legend多個核取方塊構成一組時,群組要有名稱。「通知方式」這個標題若只是旁邊的一行字,螢幕閱讀器使用者聽到的就只是三個孤立的選項。
aria-describedby說明元素的 id補充說明可掛在單一核取方塊或整個群組上。
aria-invalidtrue驗證失敗時標示。錯誤訊息本身用 aria-describedby 關聯。

WCAG 對應

  • label 與控制項關聯、群組以 fieldset/legend 表達、說明以 aria-describedby 關聯 —— 三種關係都不能只靠視覺位置。

  • 等級 A2.1.1 鍵盤

    空白鍵即可切換。

  • 方塊本身只有 16px,但 label 與它同屬一個點擊區域,實際可點範圍是整行。

  • 每個選項都有可見標籤,群組有可見的群組名稱。

  • 角色為 checkbox,名稱來自 label,勾選與部分勾選狀態都進得了無障礙樹。

APG 規則

  • 元件語意

    核取方塊具有 checkbox 角色語意

    核取控制項具有 role=checkbox 或等效的原生核取方塊語意。

  • 元件語意

    核取方塊具有無障礙名稱

    核取方塊的無障礙名稱來自其文字內容、aria-labelledby 或 aria-label。

  • 元件語意

    核取方塊正確呈現勾選與部分勾選狀態

    核取方塊勾選時 aria-checked=true、未勾選時為 false;三態核取方塊部分勾選時為 mixed。

  • 元件語意

    核取方塊群組具有無障礙名稱

    若多個核取方塊構成同一群組,role=group 的 aria-labelledby 指向可見群組標籤。

  • 頁面結構

    核取方塊或核取方塊群組具有無障礙補充說明

    若核取方塊或核取方塊群組有補充說明,對應元素的 aria-describedby 指向包含該補充說明的元素。

  • 鍵盤操作

    核取方塊可用 Space 切換狀態

    當焦點位於核取方塊時,按 Space,勾選狀態會切換。

  • 元件語意

    用來控制整組核取方塊的三態核取方塊會同步更新子項目。

    若三態核取方塊用來控制一組選項,將其勾選會勾選全部子核取方塊,取消勾選會取消全部;若支援第三次切換,則會還原先前記住的部分勾選狀態。