コンテンツにスキップ

スイッチ

hc-switch は標準の <input type="checkbox" role="switch"> に適用 します。土台の input はネイティブの挙動をすべて保ちます — Space で切り替え、値はフォーム送信に参加し、role の上書きにより スクリーンリーダーはスイッチとして読み上げます — 置き換わるのは appearance: none による見た目のクロームだけです。

別名: トグル、トグルスイッチ。

.hc-switch-label は、スイッチとそのテキストをまとめる inline-flex ヘルパーで、ラベルのクリックで input が切り替わります。

data-variant は、デフォルト以外のチェック状態の色味として successwarningerror を受け付けます — チェックボックスラジオと同じ 3 点セット です。デフォルト(省略)のバリアントは、アクティブなカラーテーマの primary の塗りを使います。

data-sizesmmd(デフォルト)、lg を受け付けます。

スイッチはネイティブのチェックボックスと同様にフォーム送信へ参加 します。即時トグルには change を待ち受けます:

<label class="hc-switch-label">
<input
class="hc-switch"
type="checkbox"
role="switch"
name="notifications"
data-hx-post="/preferences/notifications"
data-hx-trigger="change">
Email notifications
</label>

スイッチが素のフォーム POST の一部で、サーバが宣言済みの真偽値に バインドする場合、未チェックのスイッチは何も送信しないことを思い出して ください — 公認の真偽値フィールドパターン (同じ name の下に 隠し false + スイッチ true)を使います。 hc-switch にそのまま当てはまります。

  • input には常にラベルを対にしてください。両方を <label class="hc-switch-label"> で包むか、id で関連付けた別の <label for> を使います。
  • role="switch" は、二値のオン / オフトグルのまさにその セマンティックな role です — 素のチェックボックスより選んで ください。スクリーンリーダーが「チェックボックス、チェック済み / 未チェック」ではなく「スイッチ、オン / オフ」と読み上げます。土台の 要素はフォームシリアライズのために <input type="checkbox"> の ままです。ARIA role の上書きは読み上げ方だけを変えます。
  • フォーカスのアウトラインを消さないでください。このコンポーネントは デフォルトのアウトラインを、--hc-color-focus-ring で駆動される 見える box-shadow リングに置き換えています。
  • つまみのスライドのトランジションは prefers-reduced-motion: reduce を尊重します — ユーザーがオプト アウトしていれば動きは抑制されます。

component トークン(component.tokens.json):

トークンパス用途
switch.width / heightトラックの寸法。
switch.thumb-size動くつまみの直径。
switch.paddingつまみとトラック端の隙間。
switch.bg / thumb-bgオフ状態の色。
switch.checked-bg / checked-borderデフォルトバリアントのオン状態。
switch.success-checked-bg / warning-checked-bg / error-checked-bgバリアントのオン状態。
switch.disabled-bg無効時の背景。
switch.label-gapスイッチとテキストの間のギャップ。
switch.sm.* / lg.*専用の sm / lg 上書き。
生成される CSS 変数を表示
--hc-switch-width | -height | -thumb-size | -padding
--hc-switch-border-width | -border
--hc-switch-bg | -thumb-bg
--hc-switch-checked-bg | -checked-border
--hc-switch-success-checked-bg | -warning-checked-bg | -error-checked-bg
--hc-switch-disabled-bg | -label-gap
--hc-switch-sm-width | -sm-height | -sm-thumb-size
--hc-switch-lg-width | -lg-height | -lg-thumb-size
--hc-color-focus-ring (inherited from data-color)
  • チェックボックス — 比喩が「オン / オフの切り替え」ではなく「同意 / オプトイン」のとき。
  • ラジオ — 小さな固定集合からの単一選択。