<input type="checkbox" switch> で HTML の switch 属性を関連する <label> とともに使用して、ネイティブ フォームの送信、キーボード ナビゲーション、スクリーン リーダーのセマンティクスを保持するバイナリのオン / オフ切り替えを構築します(チェックボックスのスタイル設定とフォームをご覧ください)。
マークアップ
標準のチェックボックス入力にブール値の switch 属性を追加します。
<label>
Enable notifications
<input id="notifications" type="checkbox" switch>
</label>
- ラベルは入力をラップするか、
for/idに関連付けることができます。すべてのスタイル設定は入力を対象としているため、ラベル構造に依存しません。 - オンにすると、入力は標準のチェックボックス値を送信します。JavaScript で、
change(またはinput)イベントをリッスンし、.valueではなく.checkedを読み取ります。
スタイル設定
accent-color を使用してコントロールのハイライト色をカスタマイズし(ブランドに一貫したフォームを参照)、フォーカス スタイルが視認できるようにします。
input[type="checkbox"][switch] {
accent-color: var(--accent-color, #1769e0);
margin: 0;
cursor: pointer;
}
input[type="checkbox"][switch]:focus-visible {
outline: 3px solid var(--focus-color, #ff8c00);
outline-offset: 4px;
}
代替戦略
switch-control のフォールバックとブラウザ サポート
ベースライン ターゲットが <input type="checkbox" switch> をサポートしていない場合は、'switch' in HTMLInputElement.prototype が false の場合にのみ input-switch-polyfill を読み込みます。ポリフィルを無条件に読み込まないでください。ポリフィルは、role="switch" の設定、スイッチ スタイルの適用(appearance: none)、計算された accent-color の同期、ポインタのドラッグのサポートにより、switch 属性を持つチェックボックスを強化します。
プロジェクトに適したパッケージ読み込み方法を使用してください。以下の例では、設定でモジュール指定子を解決できることを前提としています。
if (!('switch' in HTMLInputElement.prototype)) {
import('input-switch-polyfill');
}
accent-color のフォールバックとブラウザ サポート
accent-color プロパティはプログレッシブ エンハンスメントです。このプロパティをサポートしていないブラウザでは、このプロパティは無視され、デフォルトの UI カラーが使用されます。