是的,CSS Checkbox Generator 的範例輸出包含可存取名稱 (accessible name)。產生的 HTML 會為每個核取方塊輸入搭配一個可見的 label 元素,該 label 內的文字正是輔助科技為該控制項所朗讀的內容。由於輸入是巢狀在 label 內,而非透過獨立的 for 與 id 配對來連結,點擊文字即可切換核取方塊,且這種關聯不可能意外中斷。因此可存取名稱是開箱即有的,但 label 內的佔位符文字只是範例文字,並非真實的產品標籤。請以對待任何其他樣板程式碼的相同方式來處理這些標記:保留結構,將文字替換為描述實際表單選項的內容,並確認新的文字能被螢幕閱讀器朗讀,且對滑鼠、鍵盤和觸控使用者都能正常運作。

does the example include an accessible name when using css checkbox generator
does the example include an accessible name when using css checkbox generator

可存取名稱究竟是什麼

可存取名稱是輔助科技在控制項取得焦點時所朗讀的簡短文字。對核取方塊而言,可存取名稱就是螢幕閱讀器在角色與狀態之前所宣讀的內容,因此使用者會聽到類似「訂閱電子報,核取方塊,未勾選」,而不是僅僅聽到「核取方塊」。有 3 個要素使這樣的宣讀成為可能:角色 (由原生 input 元素提供)、狀態 (由瀏覽器追蹤 checked、focus 和 disabled 提供),以及名稱 (由相關聯的 label、控制項下方的標題,或明確的 aria-label 或 aria-labelledby 屬性提供)。移除名稱,控制項就會在功能上變成匿名;螢幕閱讀器使用者將無法判斷他們即將切換的是哪個選項。

原生 HTML label 元素是附加名稱最穩健的方式,因為其關聯是結構性的,不依賴兩個屬性之間的字串比對。如果開發者重新命名 id 或不小心在頁面上重複使用 id,以 for 和 id 配對的方式可能會默默地失效;但巢狀的 label 不會。CSS Checkbox Generator 刻意選擇巢狀形式,這樣即使開發者將範例貼到尚未確定如何設定樣式的樣式表,範例仍能維持可用的可存取名稱。

產生器如何配對輸入與其 label

產生器公開的標記刻意保持精簡:type="checkbox" 的 input 位於 label 元素內部,該 label 同時包含可見文字。input 本身帶有 CSS 目標所指定的範圍 class 名稱,而 label 同時為滑鼠和觸控使用者提供點擊目標,並為螢幕閱讀器提供可存取名稱。產生的 CSS 中並未移除原生焦點框 (focus ring);輸出會新增一個 focus-visible 輪廓,其顏色符合所選的強調色,因此鍵盤使用者能清楚看到哪個控制項會回應空白鍵。這個焦點指示屬於可存取性合約的一部分,而非裝飾性的附加項目。

產生器並未將原生 input 替換為樣似核取方塊的 div。這個區別很重要,因為所有由瀏覽器管理的行爲——勾選狀態、鍵盤啟動、表單參與,以及 disabled 處理——都來自真正的表單控制項。以 div 製作的核取方塊可以模仿外觀,但預設情況下會失去名稱、角色和狀態,開發者必須手動重新建立它們。保留 input type="checkbox" 意味著範例可免費繼承完整的可存取性功能組,而剩下唯一的可存取性工作就是確保 label 文字符合實際的選項。

用於抑制瀏覽器繪製的 CSS 機制是 MDN 上有文件說明的 appearance 屬性,它會移除平台的核取方塊外觀,同時讓底層元素仍保持核取方塊的行為。該屬性的標準層級定義位於 CSS Basic User Interface 規範 中,正確使用它才能讓產生器保留原生 input,而無須重新打造該控制項。

閱讀範例中隨附的佔位符 label

產生器範例中的 label 文字刻意使用通用的佔位符措辭,以便複製時標記一目了然。您要保留的是結構關係,而不是逐字內容。在片段放入真實表單之前,label 必須描述其所代表的選項,並使用與視力正常使用者在方塊旁所讀到的相同語言。

模式名稱如何公開什麼會破壞它
輸入巢狀在 label 內同一個元素內的可見文字重新命名可見文字,但絕不會以無聲方式發生
label for="x" + input id="x"label 內的可見文字,透過 id 連結重複的 id、缺少 for,或重新命名 id 時未更新 for
輸入上的 aria-label由輔助科技讀取的字串屬性未翻譯的字串、視力正常使用者無可見文字
指向標題的 aria-labelledby另一個元素的文字內容缺少目標 id、被參考的元素被隱藏

產生器使用第一種模式,因為它是唯一能從同一個來源同時為輔助科技和視力正常使用者提供名稱的模式。其他模式可以在設計需要時稍後新增,但它們並非產生器出貨時的基準。

如何重新命名 label 並驗證可存取名稱

操作流程很短,而可存取性編輯是多數讀者來到這裡的重點,因此值得逐步走過這 3 個有文件記錄的步驟,並明確指出 label 適合放在哪裡。

  1. 開啟 CSS Checkbox Generator,調整大小、邊框、圓角以及 3 種顏色 (強調色、背景、勾號),同時觀察即時核取方塊預覽如何反映每一項變更。
  2. 將 CSS 和 HTML 複製到您的專案中。在 HTML 片段中,將佔位符 label 文字替換為描述真實表單選項的措辭——例如,將範例文字更改為「以電子郵件寄送我產品更新」。請勿變更 input 類型或移除 label 包裹層。
  3. 開啟目的頁面並測試新的 label:透過 Tab 鍵將焦點移至核取方塊、聆聽新文字是否被宣讀、按空白鍵切換狀態、直接點擊 label 文字以確認點擊會切換輸入,並在 200% 縮放時重複測試,確認焦點輪廓在周圍頁面中仍符合對比度。
  4. 新增並測試您真實表單需要但範例未涵蓋的任何狀態:disabled、invalid、required 和 indeterminate。每一項都是開發者的責任,而非產生器的輸出。
  5. 如果您的網站支援作業系統的強制色彩,請保持顏色不被抑制,並確認系統提供的調色盤仍可讓勾選狀態與未勾選狀態有所區分。

範例涵蓋與未涵蓋的狀態

產生器的預覽對其範圍誠實以告。它展示了未勾選、已勾選和 focus-visible 狀態;它不會模擬 disabled、invalid、required、indeterminate 或強制色彩的行為。若將預覽視為完整的可存取性測試,將會遺漏真實表單可能需要的所有狀態。

狀態範例是否涵蓋在正式環境中您必須新增的內容
未勾選
已勾選
已取得焦點 (鍵盤)是 (focus-visible 輪廓)確認輪廓在真實周圍背景下的對比度
懸停部分,透過游標變更為真實主題新增選用的懸停樣式
已停用disabled 屬性,加上降低對比度的樣式和可見的提示
無效/錯誤aria-invalid、aria-errormessage、label 附近的錯誤文字
必填required 屬性,加上指示和可存取的說明文字
不定JavaScript 設定 input.indeterminate = true,以及描述「部分選取」的 label
強制色彩否 (系統提供的顏色可能會覆寫)進行測試,若無正當理由請勿取消覆寫

label 在所有這些狀態中都能保持運作,因為其關係是結構性的。input 上的 disabled 屬性會讓瀏覽器自動在可存取名稱旁邊宣讀「變暗」或「已停用」;required 和 invalid 屬性也以同樣方式被宣讀。這些新增項目都不需要觸碰可見的 label 文字。

超越 label:其餘的可存取性檢查

可存取名稱是必要條件,但並非充分條件。同一個控制項在其部署的頁面上仍必須是可見的、可取得焦點的,以及可操作的。在表單上線前,label 只是值得檢查的項目之一。

  • 強調色、背景、勾號與周圍頁面之間的對比度,文字部分至少達到 WCAG AA 的 4.5:1 比率,非文字 UI 元件則達到 3:1。將 Color Contrast Checker 與產生器接受的十六進位值搭配使用,是針對您的真實主題確認這點的最快方式。
  • 表單中的焦點順序符合邏輯並與視覺順序一致。產生器本身的頁面包含許多可取得焦點的控制項,因此僅靠預覽並不能取代對目的表單的順序和指示進行測試。
  • 在 200% 縮放時,核取方塊不會與其 label 重疊或將其推出視圖,且焦點輪廓在較大的尺寸下仍可見。
  • 強制色彩模式保留已勾選與未勾選之間的可見區分。抑制系統調色板很少是正確的選擇;若您這麼做,請記錄原因。
  • 如果表單使用翻譯後的 label,由於名稱是從 label 內的可見文字讀取,因此可存取名稱會隨翻譯免費一起轉移。

若要更深入了解 label 關係與其餘 CSS 如何相互搭配,以正確方式在 CSS 中製作核取方塊 的相關逐步說明涵蓋了更詳細的樣式設計面向,而 將 RGB 轉換為 HEX 以取得可存取的色彩對比 的工作流程在需要根據 WCAG 比率驗證強調色和背景顏色時非常有用。

Putting it together

The answer to the original question is yes: the example output from the CSS Checkbox Generator does include an accessible name, because the input is nested inside a label element and the visible text inside that label is what assistive technologies announce. The label's words are placeholder text and must be replaced before shipping, but the structural relationship between the input and its name is preserved by the generator and survives every common state change the form will need. Treat the snippet as a clean, named, native starting point: keep the label wrapper, rewrite the text to match the real choice, add the disabled, invalid, required, and indeterminate states your product needs, and run a final check with a screen reader to confirm the new wording is exactly what gets announced.