Button 按鈕
概述
按鈕用於觸發動作或事件,是最基本的互動元件。
互動範例
試著操作下方按鈕:hover(滑鼠移入)、按下去(active)、用 Tab 鍵聚焦(focus)。
html
<govtw-button variant="primary">送出</govtw-button>
<govtw-button variant="secondary">取消</govtw-button>
<govtw-button variant="danger">刪除</govtw-button>尺寸
html
<govtw-button size="sm">小按鈕</govtw-button>
<govtw-button size="md">中按鈕</govtw-button>
<govtw-button size="lg">大按鈕</govtw-button>停用狀態
html
<govtw-button disabled>停用按鈕</govtw-button>
<govtw-button variant="secondary" disabled>停用次要</govtw-button>連結按鈕
當按鈕需要導航至其他頁面時,設定 href 會將按鈕渲染為 <a role="button">,保持按鈕外觀但具備連結行為。
html
<govtw-button href="https://design-system.service.gov.uk/">前往 GOV.UK</govtw-button>
<govtw-button href="https://design-system.service.gov.uk/" target="_blank" rel="noreferrer noopener">另開新分頁</govtw-button>
<govtw-button href="https://design-system.service.gov.uk/" disabled>停用連結</govtw-button>互動狀態展示
按鈕的互動回饋參考 GOV.UK Design System 的設計手法,核心目標是不依賴顏色作為唯一的視覺指示。
Hover(懸停)
滑鼠移到按鈕上,背景色加深。即使是色覺障礙使用者,也能透過明暗變化感知狀態改變。
預設送出 → Hover送出
Active(按壓)
按下按鈕時,底部 inset shadow 消失,視覺上按鈕「扁下去」。這是不依賴色彩的物理回饋。
預設(有底部陰影)送出 → Active(陰影消失)送出
Focus(聚焦)
用 Tab 鍵導航時,按鈕外圍出現 3px 黃色 #fd0 focus ring,貼合圓角。
預設送出 → Focus送出
Disabled(停用)
透明度降至 50%,游標變為禁止符號。
html
<govtw-button variant="primary">預設</govtw-button>
<govtw-button variant="primary" disabled>停用</govtw-button>使用方式
html
<!-- 一般按鈕 -->
<govtw-button>送出</govtw-button>
<govtw-button variant="secondary">取消</govtw-button>
<govtw-button variant="danger">刪除</govtw-button>
<!-- 連結按鈕(導航至其他頁面) -->
<govtw-button href="/next-step">開始申請</govtw-button>
<govtw-button href="https://example.com" target="_blank" rel="noreferrer noopener">外部連結</govtw-button>屬性
| 屬性 | 型別 | 預設值 | 說明 |
|---|---|---|---|
variant | 'primary' | 'secondary' | 'danger' | 'primary' | 按鈕樣式 |
size | 'sm' | 'md' | 'lg' | 'md' | 按鈕大小 |
disabled | boolean | false | 是否停用 |
href | string | '' | 連結網址,有值時渲染為 <a> |
target | string | '' | 連結目標(如 _blank) |
rel | string | '' | 連結關係(如 noreferrer noopener) |
樣式變體
Primary(主要按鈕)
用於頁面上最重要的動作,每個頁面區塊建議只有一個主要按鈕。
- 背景色:
--govtw-color-brand-primary - 文字色:
--govtw-color-text-on-primary
Secondary(次要按鈕)
用於次要動作,可與主要按鈕搭配使用。
- 邊框:
--govtw-color-border-default - 文字色:
--govtw-color-text-primary
Danger(危險按鈕)
用於刪除、移除等破壞性操作。
- 背景色:
--govtw-color-feedback-error - 文字色:
--govtw-color-text-on-primary
無障礙
- 無
href時使用語意化的<button>元素;有href時渲染為<a role="button"> - 確保鍵盤可操作(Enter 和 Space 皆可觸發)
- 焦點狀態以黃色 focus ring 清晰標示,支援鍵盤導航
- 互動回饋透過 inset shadow 消失傳達按壓感,不僅依靠色彩
- 停用狀態使用
aria-disabled而非移除元素 - 連結按鈕停用時移除
href並設定tabindex="-1"防止聚焦 - 透明邊框確保 Windows 高對比模式下可見
- 色彩對比度符合 WCAG 2.2 AA 標準(至少 4.5:1)
設計指引
- 按鈕文字應簡潔明確,描述動作(如「送出申請」而非「點擊這裡」)
- 避免在同一區塊使用過多按鈕
- 按鈕之間保持
--govtw-spacing-3以上的間距 - 危險按鈕不應只靠紅色傳達嚴重性,需搭配文字說明動作後果