Switch コンポーネント
Ignite UI for React Switch コンポーネントは、iOS のスイッチ コンポーネントと同様に動作するバイナリ選択の選択コンポーネントです。
ライブ デモ
構造
React Switch には、バイナリ状態を変更するコントロールと、オプションのラベルが含まれています。
2. つまみ: 現在の状態を変更します。
3. ラベル (オプション): スイッチが制御する内容を説明します。
以下の図は、React Switch の論理構造を示しています。コントロールはバイナリ状態を管理し、オプションのラベルはスイッチによって制御される設定を説明します。
Switch
├── Control
└── Label (optional)
作業の開始
React Switch を使用するには、基本的なプロジェクト設定について Ignite UI for React の作業の開始 トピックに従ってから、ターゲット プラットフォーム用にコンポーネントを登録します。
IgrSwitch コンポーネントにより、オン/オフ状態を切り替えることができます。デフォルトのスタイル設定はマテリアル デザイン ガイドラインの選択コントロールの仕様に基づきます。
igniteui-react パッケージを使用する React では、パッケージをインストールします。
npm install igniteui-react
次に、Switch ラッパーとそのテーマ CSS をインポートします。
import { IgrSwitch } from 'igniteui-react';
import 'igniteui-webcomponents/themes/light/bootstrap.css';
IgrSwitch の使用を開始する最も簡単な方法は次のとおりです。
<IgrSwitch></IgrSwitch>
使用方法
React Switch は、ユーザーが状態を変更するとすぐに反映される設定用のバイナリ選択コントロールとして使用します。
以下の例は、基本的な Switch の構成を示しています。スイッチに意味のあるラベルを付けるには、開始タグと終了タグの間にテキストを配置するだけです。
<IgrSwitch>Accept terms</IgrSwitch>
required プロパティを使用して、スイッチを必須としてマークできます。
<IgrSwitch required={true}></IgrSwitch>
invalid プロパティを使用して、スイッチを無効としてマークできます。
<IgrSwitch invalid={true}></IgrSwitch>
インタラクション状態
Switch は Enabled または Disabled 状態で挿入できます。Enabled 状態では、スイッチは Hover、Focused、および Focused & Hover の状態もサポートします。
無効状態
スイッチの状態を Disabled に設定して、ユーザーの操作を許可しないようにすることもできます。この状態を設定するには、disabled 属性を使用できます。
<IgrSwitch disabled={true}></IgrSwitch>
オン/オフ状態
Switch は On または Off の状態に設定して、設定が有効か無効かを示すことができます。
<IgrSwitch checked={true}>On</IgrSwitch>
<IgrSwitch checked={false}>Off</IgrSwitch>
レイアウト
スイッチの LabelPosition プロパティを設定することにより、スイッチの切り替えの前または後にラベルを配置するかどうかを指定できます。許可される値は、before と after (デフォルト) です。
<IgrSwitch aria-labelledby="switch-label" labelPosition="before"><span id="switch-label">Label</span></IgrSwitch>
スイッチには、スイッチの外部の要素でラベルを付けることもできます。この場合、ユーザーはニーズに応じてラベルの位置とスタイルを完全に制御できます。
<>
<span id="switch-label">Label</span>
<IgrSwitch aria-labelledby="switch-label"></IgrSwitch>
</>
使用すべき場合と使用すべきでない場合
使用する場合: ユーザーが変更するとすぐに反映されるオン/オフの設定には Switch を使用します。
使用しない場合: ユーザーが後でフォームを送信するために 1 つ以上のオプションを選択する場合は Checkbox を使用し、コントロールがアクションまたは切り替え可能なコマンドを表す場合は Button を使用します。
| Do | Don’t |
|---|---|
![]() | ![]() |
プロパティ
| 名前 | タイプ | デフォルト | 説明 |
|---|---|---|---|
checked |
boolean |
false |
スイッチがオンかどうかを取得または設定します。 |
disabled |
boolean |
false |
スイッチが無効かどうかを取得または設定します。 |
invalid |
boolean |
false |
スイッチが無効 (invalid) かどうかを取得または設定します。 |
labelPosition |
ToggleLabelPosition |
after |
コントロールに対するラベルの位置を設定します。 |
name |
string |
- |
スイッチがフォームで送信されるときに使用される名前を設定します。 |
required |
boolean |
false |
スイッチが必須かどうかを取得または設定します。 |
value |
string |
- |
スイッチがフォームで送信されるときに使用される値を設定します。 |
スタイル設定
React Switch は、CSS パーツと CSS 変数を使用して、トラック、つまみ、およびラベルのスタイルを設定します。
Sass テーマ設定
Ignite UI for React テーマ システムを使用して、アプリケーションの他の部分と一貫性のある Switch のスタイルを設定します。
カスタム Switch テーマを作成する前に、テーマ関数をインポートします。
@use "igniteui-theming" as *;
switch-theme を使用してテーマを作成し、それをグローバル スタイルシートに含めます。トラックとつまみのパラメーターは、関連するインタラクション状態の色のベースとして使用されます。
$custom-switch: switch-theme(
$track-on-color: #57a5cd,
);
igc-switch {
@include switch($custom-switch);
}
同じテーマが Web Components に直接適用され、React および Blazor ラッパーによってレンダリングされる基になる igc-switch 要素にも適用されます。
CSS 変数
以下の CSS 変数を使用して、Switch の色とインタラクション状態をカスタマイズします。これらを Switch 要素に設定して、そのトラック、つまみ、およびラベルにスタイルを適用します。
| プライマリ プロパティ | 依存プロパティ | 説明 |
|---|---|---|
--track-on-color |
--track-on-hover-color |
スイッチがチェックされているときのトラックの背景。 |
--track-off-color |
スイッチのチェックが外れているときのトラックの背景。 | |
--thumb-on-color |
--thumb-off-color |
チェック済みおよびチェック解除の状態のつまみの色。 |
--label-color |
--label-disabled-color |
デフォルトおよび無効状態のラベルの色。 |
スタイル パーツ
以下の CSS パーツを使用して、Switch とその内部要素をターゲットにします。
| パーツ | コンポーネント | スタイル設定内容 |
|---|---|---|
base |
IgrSwitch |
スイッチの基本ラッパー。 |
control |
IgrSwitch |
スイッチの入力要素。 |
thumb |
IgrSwitch |
スイッチの位置インジケーター。 |
label |
IgrSwitch |
スイッチのラベル。 |
カスタム スタイル設定
以下の例は、チェック済みおよびチェック解除の状態のトラックとつまみの色を変更します。
| セレクター | 宣言 | 効果 |
|---|---|---|
igc-switch |
--track-on-color, --track-off-color |
チェック済みおよびチェック解除の状態のトラックの背景を変更します。 |
igc-switch |
--thumb-on-color, --thumb-off-color |
チェック済みおよびチェック解除の状態のつまみの色を変更します。 |
igc-switch {
--thumb-on-color: white;
--thumb-off-color: var(--ig-success-500);
--track-on-color: var(--ig-success-500); /* Background color when checked */
--track-off-color: white; /* Background color when unchecked */
--track-on-hover-color: var(--ig-success-500); /* Background hover color when checked */
}
Tailwind でのスタイル設定
igniteui-theming のカスタム Tailwind ユーティリティ クラスを使用して React Switch のスタイルを設定できます。まず Tailwind をセットアップ してから、グローバル スタイルシートに Ignite UI ユーティリティをインポートします。
@import "tailwindcss";
@import "igniteui-theming/tailwind/utilities/material.css";
<IgrSwitch className="!light-switch ![--track-on-color:#7B9E89]"></IgrSwitch>
感嘆符 (!) は、Switch のデフォルトのテーマ スタイルよりも Tailwind ユーティリティを優先させます。
アクセシビリティ
React Switch はバイナリ状態を公開し、そのラベルまたは ARIA 属性を通じてアクセシブルな名前をサポートします。
キーボード操作
| キー | アクション |
|---|---|
| Tab / Shift+Tab | フォーカスをスイッチに移動またはスイッチから移動します。 |
| Space | フォーカスされているスイッチを切り替えます。 |
スクリーン リーダー/ARIA
Switch は、バイナリのチェック状態を持つインタラクティブなコントロールをレンダリングします。表示されるラベル コンテンツ、または aria-label や aria-labelledby によるアクセシブルな名前を用意し、ラベルはスイッチが制御する設定に固有のものにしてください。
- コントロールは、そのチェック状態と無効状態を支援技術に公開します。
- チェック状態が変更されると、
igcChangeイベントが発生します。
アクセシビリティ コンプライアンス
Infragistics は、Section 508 および WCAG 2.1 ガイドライン領域に対する Ignite UI for React のアクセシビリティ サポートを アクセシビリティ コンプライアンス トピックで説明しています。
| 基準 | コンポーネントがどのように準拠しているか |
|---|---|
| 2.1.1 キーボード | スイッチはキーボードで到達でき、Space で切り替えることができます。 |
| 4.1.2 名前、役割、値 | スイッチは、レンダリングされたコントロールを通じて、アクセシブルな名前とバイナリのチェック状態を公開します。 |
トラブルシューティング
このセクションを使用して、Switch をフォーム フィールド、インタラクティブなコマンド、または設定コントロールとして扱う前に、境界と一般的な決定事項を確認してください。
Switch がフォームで送信されないのはなぜですか?
Switch はフォームに関連付けられますが、フォームが送信されたときに値を提供するには name と value が必要です。両方のプロパティを設定し、対象プラットフォームでサポートされているフォーム統合を使用してください。
スクリーン リーダーで Switch が正しく読み上げられないのはなぜですか?
Switch にはアクセシブルな名前が必要です。表示されるラベル コンテンツを追加するか、aria-labelledby で外部ラベルを参照してください。表示テキストが利用できない場合は aria-label を使用してください。
既知の制限事項
React Switch には、プラットフォームに依存しない以下の制限事項があります。
- Switch は 1 つのバイナリ設定を表します。ユーザーが複数の選択肢または後から行うフォーム選択を必要とする場合は、別のコントロールを使用してください。
- Switch にラベルまたは ARIA 命名属性がない場合、アクセシブルな名前は自動的には提供されません。
API リファレンス
React Switch の完全な API リファレンスを参照してください。
IgrSwitch
依存関係
React Switch は、視覚的なスタイルを適用するためにテーマ スタイルシートを必要とします。フレームワーク固有のセットアップについては、作業の開始 を参照してください。
その他のリソース
API の詳細、例、およびプロジェクトのサポートについては、以下の React リソースを使用してください。
関連コンポーネント
-
Checkbox - ユーザーが 1 つ以上のオプションを選択する場合、特にフォームの一部として使用する場合は Checkbox を使用します。
-
Button - コントロールが設定ではなくコマンドまたはアクションを表す場合は Button を使用します。
FAQ
checked プロパティをオン状態の場合は true に、オフ状態の場合は false に設定します。React、Web Components、および Blazor の構文では、このプロパティはブール値を使用します。
Switch 内にラベル テキストを配置し、labelPosition プロパティを before または after に設定します。デフォルトのラベル位置は after です。
name と value の両方のプロパティを設定します。Blazor では、標準の HTML form の代わりに EditForm コンポーネントを使用します。
設定を選択する必要がある場合は required プロパティを設定し、コントロールが無効な状態にある場合は invalid を設定します。ユーザーが設定を変更できないようにする場合は disabled を使用します。

