介面工藝與無障礙設計 是做什麼的?
概覽
標準是無障礙、極簡且美麗——在於設計本身,而非後續潤飾。 品味作為規則難以操作,因此被轉化為約束條件、既有先例與升級流程。代理不需要憑空創造品味,只需遵守約束條件並將其餘事項升級。
無障礙——必要條件,而非事後補救
可檢查的規則:
- 每個互動元素都必須可通過鍵盤到達,並有可見的焦點狀態。
- 每個控制項都有可存取的名稱;每個表單欄位都有關聯的標籤和清晰的錯誤訊息。
- 使用語意化 HTML 和地標,避免濫用
div。 - 色彩對比符合 WCAG AA;意義絕不僅由顏色傳達。
- 尊重減少動畫偏好設定。
美麗且極簡——作為約束,而非氛圍
- 透過約束達到一致性。 使用設計系統的代碼——間距、字體級別、顏色級別。不使用一次性魔術數字。連貫性即是美學。
- 現有畫面即風格指南。 在發明新的視覺語言之前,先匹配已有的視覺語言。
- 節制(UI-YAGNI)。 每個元素都必須以其存在證明其價值;刪除直到刪除會破壞某項功能為止。層次結構與留白優先於密度與裝飾。
- 優先使用元件庫的模式,而非自行構建客製 UI。
- 兩個相似的 UI 元件 → 一個參數化元件。 差異透過 props/變體實現,絕不複製貼上。第三份副本即為缺陷。(將 DRY 原則應用於介面。)
升級規則
品味決策必須升級;絕不自行判斷。 當一個選擇純屬美學範疇,且無法由代碼或先例決定時,不應默默猜測:
- 遵循最接近的既有先例,或者
- 提供選項(模型圖、並排比較)供人類進行品味判斷。
快速參考
| 情況 | 做法 |
|---|---|
| 新元件與現有元件相似 | 將現有元件參數化;不要複製 |
| 間距/顏色值不在代碼中 | 使用最接近的代碼;不要發明魔術數字 |
| 真正新穎的視覺決策 | 提供選項並升級;不要自行判斷 |
| 新增互動元素 | 從一開始就確保鍵盤可達、焦點可見、具備可存取名稱 |
強制執行: 在 CI 中進行無障礙 linting/測試(例如 eslint-plugin-jsx-a11y、axe)以檢查可檢查的規則;美學節制則透過審查者根據升級規則進行判斷。
完整理由:參見憲法第七條,位於 engineering-constitution/references/engineering-constitution.md。