ion-checkbox
チェックボックスを使用すると、オプションのセットから複数のオプションを選択できます。アクティブになると、チェック済み(チェックマーク付き)として表示されます。チェックボックスをクリックすると、checkedプロパティが切り替わります。checkedプロパティを設定することで、プログラムによってチェックすることもできます。
基本的な使用方法
ラベルの位置
開発者は、labelPlacementプロパティを使用して、コントロールに対するラベルの位置を制御できます。このプロパティは、flexboxのflex-directionプロパティを反映しています。
配置
開発者は、alignmentプロパティを使用して、ラベルとコントロールを横軸上でどのように配置するかを制御できます。このプロパティは、flexboxのalign-itemsプロパティを反映しています。
積み重ねられたチェックボックスは、alignmentプロパティを使用して配置できます。これは、ラベルとコントロールを水平方向に中央揃えする必要がある場合に役立ちます。
調整
開発者は、justifyプロパティを使用して、ラベルとコントロールを1行にどのように配置するかを制御できます。このプロパティは、flexboxのjustify-contentプロパティを反映しています。
ion-itemは、justifyの動作を強調するためにデモでのみ使用されます。justifyが正しく機能するために必要ではありません。
不定チェックボックス
ラベル内のリンク
チェックボックスのラベルには、リンクが付いている場合があります。これらのリンクは、チェックボックスに関する詳細情報を提供できます。ただし、リンクをクリックしてもチェックボックスがチェックされるべきではありません。これを実現するには、stopPropagationを使用して、クリックイベントのバブリングを防ぐことができます。この方法を使用すると、ラベルの残りの部分はクリック可能なままです。
テーマ
CSSカスタムプロパティ
インターフェース
CheckboxChangeEventDetail
interface CheckboxChangeEventDetail<T = any> {
value: T;
checked: boolean;
}
CheckboxCustomEvent
必須ではありませんが、このインターフェースはCustomEventインターフェースの代わりに使用して、このコンポーネントから発行されるIonicイベントの型付けを強化できます。
interface CheckboxCustomEvent<T = any> extends CustomEvent {
detail: CheckboxChangeEventDetail<T>;
target: HTMLIonCheckboxElement;
}
従来のチェックボックス構文からの移行
Ionic 7.0では、よりシンプルなチェックボックス構文が導入されました。この新しい構文により、チェックボックスの設定に必要なボイラープレートが削減され、アクセシビリティの問題が解決され、開発者エクスペリエンスが向上します。
開発者は、一度に1つのチェックボックスずつこの移行を実行できます。従来の構文を引き続き使用できますが、できるだけ早く移行することをお勧めします。
最新の構文の使用
最新の構文を使用するには、ion-labelを削除し、ラベルをion-checkbox内に直接渡します。ラベルの位置は、ion-checkboxのlabelPlacementプロパティを使用して設定できます。ラベルとコントロールが1行にどのように配置されるかは、ion-checkboxのjustifyプロパティを使用して制御できます。
- JavaScript
- Angular
- React
- Vue
<!-- Basic -->
<!-- Before -->
<ion-item>
<ion-label>Checkbox Label</ion-label>
<ion-checkbox></ion-checkbox>
</ion-item>
<!-- After -->
<ion-item>
<ion-checkbox>Checkbox Label</ion-checkbox>
</ion-item>
<!-- Fixed Labels -->
<!-- Before -->
<ion-item>
<ion-label position="fixed">Checkbox Label</ion-label>
<ion-checkbox></ion-checkbox>
</ion-item>
<!-- After -->
<ion-item>
<ion-checkbox label-placement="fixed">Checkbox Label</ion-checkbox>
</ion-item>
<!-- Checkbox at the start of line, Label at the end of line -->
<!-- Before -->
<ion-item>
<ion-label slot="end">Checkbox Label</ion-label>
<ion-checkbox></ion-checkbox>
</ion-item>
<!-- After -->
<ion-item>
<ion-checkbox label-placement="end">Checkbox Label</ion-checkbox>
</ion-item>
<!-- Basic -->
<!-- Before -->
<ion-item>
<ion-label>Checkbox Label</ion-label>
<ion-checkbox></ion-checkbox>
</ion-item>
<!-- After -->
<ion-item>
<ion-checkbox>Checkbox Label</ion-checkbox>
</ion-item>
<!-- Fixed Labels -->
<!-- Before -->
<ion-item>
<ion-label position="fixed">Checkbox Label</ion-label>
<ion-checkbox></ion-checkbox>
</ion-item>
<!-- After -->
<ion-item>
<ion-checkbox labelPlacement="fixed">Checkbox Label</ion-checkbox>
</ion-item>
<!-- Checkbox at the start of line, Label at the end of line -->
<!-- Before -->
<ion-item>
<ion-label slot="end">Checkbox Label</ion-label>
<ion-checkbox></ion-checkbox>
</ion-item>
<!-- After -->
<ion-item>
<ion-checkbox labelPlacement="end">Checkbox Label</ion-checkbox>
</ion-item>
{/* Basic */}
{/* Before */}
<IonItem>
<IonLabel>Checkbox Label</IonLabel>
<IonCheckbox></IonCheckbox>
</IonItem>
{/* After */}
<IonItem>
<IonCheckbox>Checkbox Label</IonCheckbox>
</IonItem>
{/* Fixed Labels */}
{/* Before */}
<IonItem>
<IonLabel position="fixed">Checkbox Label</IonLabel>
<IonCheckbox></IonCheckbox>
</IonItem>
{/* After */}
<IonItem>
<IonCheckbox labelPlacement="fixed">Checkbox Label</IonCheckbox>
</IonItem>
{/* Checkbox at the start of line, Label at the end of line */}
{/* Before */}
<IonItem>
<IonLabel slot="end">Checkbox Label</IonLabel>
<IonCheckbox></IonCheckbox>
</IonItem>
{/* After */}
<IonItem>
<IonCheckbox labelPlacement="end">Checkbox Label</IonCheckbox>
</IonItem>
<!-- Basic -->
<!-- Before -->
<ion-item>
<ion-label>Checkbox Label</ion-label>
<ion-checkbox></ion-checkbox>
</ion-item>
<!-- After -->
<ion-item>
<ion-checkbox>Checkbox Label</ion-checkbox>
</ion-item>
<!-- Fixed Labels -->
<!-- Before -->
<ion-item>
<ion-label position="fixed">Checkbox Label</ion-label>
<ion-checkbox></ion-checkbox>
</ion-item>
<!-- After -->
<ion-item>
<ion-checkbox label-placement="fixed">Checkbox Label</ion-checkbox>
</ion-item>
<!-- Checkbox at the start of line, Label at the end of line -->
<!-- Before -->
<ion-item>
<ion-label slot="end">Checkbox Label</ion-label>
<ion-checkbox></ion-checkbox>
</ion-item>
<!-- After -->
<ion-item>
<ion-checkbox label-placement="end">Checkbox Label</ion-checkbox>
</ion-item>
以前のバージョンのIonicでは、ion-checkboxが正しく機能するためにion-itemが必要でした。Ionic 7.0以降、ion-checkboxは、アイテムがion-listに配置されている場合にのみion-item内で使用する必要があります。また、ion-checkboxが正しく機能するためにion-itemは不要になりました。
従来の構文の使用
Ionicは、アプリが最新のチェックボックス構文を使用しているかどうかを検出するためのヒューリスティックを使用します。場合によっては、従来の構文を引き続き使用することが望ましい場合があります。開発者は、ion-checkboxのlegacyプロパティをtrueに設定して、チェックボックスのそのインスタンスで従来の構文を使用するように強制できます。
プロパティ
alignment
| 説明 | チェックボックスとラベルの横軸上の配置を制御する方法。"start": ラベルとコントロールは、LTRでは横軸の左側に、RTLでは右側に表示されます。"center": ラベルとコントロールは、LTRとRTLの両方で横軸の中央に表示されます。このプロパティを設定すると、チェックボックスのdisplayがblockに変更されます。 |
| 属性 | alignment |
| 型 | "center"|"start"|undefined |
| デフォルト | undefined |
checked
| 説明 | trueの場合、チェックボックスは選択されています。 |
| 属性 | checked |
| 型 | boolean |
| デフォルト | false |
color
| 説明 | アプリケーションの色パレットから使用する色。デフォルトのオプションは、"primary"、"secondary"、"tertiary"、"success"、"warning"、"danger"、"light"、"medium"、"dark"です。色の詳細については、テーマを参照してください。 |
| 属性 | color |
| 型 | "danger"|"dark"|"light"|"medium"|"primary"|"secondary"|"success"|"tertiary"|"warning"|文字列|undefined |
| デフォルト | undefined |
disabled
| 説明 | trueの場合、ユーザーはチェックボックスと対話できません。 |
| 属性 | disabled |
| 型 | boolean |
| デフォルト | false |
indeterminate
| 説明 | trueの場合、チェックボックスは視覚的に不定として表示されます。 |
| 属性 | indeterminate |
| 型 | boolean |
| デフォルト | false |
justify
| 説明 | ラベルとチェックボックスを一行内に配置する方法。"start": LTRではラベルとチェックボックスが左側に、RTLでは右側に表示されます。"end": LTRではラベルとチェックボックスが右側に、RTLでは左側に表示されます。"space-between": ラベルとチェックボックスは行の両端に配置され、両要素間にスペースが入ります。このプロパティを設定すると、チェックボックスのdisplayがblockに変更されます。 |
| 属性 | justify |
| 型 | "end" | "space-between" | "start" | undefined |
| デフォルト | undefined |
labelPlacement
| 説明 | チェックボックスに対するラベルの配置場所。"start": LTRではラベルがチェックボックスの左側に、RTLでは右側に表示されます。"end": LTRではラベルがチェックボックスの右側に、RTLでは左側に表示されます。"fixed": 幅が固定される点を除き、"start"と同じ動作をします。長いテキストは省略記号("...")で切り詰められます。"stacked": 方向に関係なく、ラベルがチェックボックスの上に表示されます。ラベルの配置はalignmentプロパティで制御できます。 |
| 属性 | label-placement |
| 型 | "end" | "fixed" | "stacked" | "start" |
| デフォルト | 'start' |
mode
| 説明 | どのプラットフォームのスタイルを使用するかを決定します。 |
| 属性 | mode |
| 型 | "ios" | "md" |
| デフォルト | undefined |
name
| 説明 | フォームデータと共に送信されるコントロールの名前。 |
| 属性 | name |
| 型 | 文字列 |
| デフォルト | this.inputId |
value
| 説明 | チェックボックスの値は、チェックされているかどうかを示すものではありません。そのためにはcheckedプロパティを使用してください。チェックボックスの値は、 <input type="checkbox">の値と同様で、チェックボックスがネイティブの<form>に関与する場合にのみ使用されます。 |
| 属性 | value |
| 型 | 任意 |
| デフォルト | 'on' |
Events
| 名前 | 説明 | バブル |
|---|---|---|
ionBlur | チェックボックスがフォーカスを失ったときに発生します。 | true |
ionChange | クリックなどのユーザー操作の結果、checkedプロパティが変更されたときに発生します。 プログラムで checkedプロパティを設定した場合は、このイベントは発生しません。 | true |
ionFocus | チェックボックスがフォーカスされたときに発生します。 | true |
Methods
このコンポーネントで使用できる公開メソッドはありません。
CSS Shadow Parts
| 名前 | 説明 |
|---|---|
container | チェックボックスマークのコンテナ。 |
label | チェックボックスを表すラベルテキスト。 |
mark | チェック済みの状態を示すチェックマーク。 |
CSS Custom Properties
- iOS
- MD
| 名前 | 説明 |
|---|---|
--border-color | チェックボックスアイコンの枠線の色 |
--border-color-checked | チェック済みの場合のチェックボックスアイコンの枠線の色 |
--border-radius | チェックボックスアイコンの角丸の半径 |
--border-style | チェックボックスアイコンの枠線のスタイル |
--border-width | チェックボックスアイコンの枠線の幅 |
--checkbox-background | チェックボックスアイコンの背景 |
--checkbox-background-checked | チェック済みの場合のチェックボックスアイコンの背景 |
--checkmark-color | チェック済みの場合のチェックボックスチェックマークの色 |
--checkmark-width | チェックボックスチェックマークの線の太さ |
--size | チェックボックスアイコンのサイズ |
--transition | チェックボックスアイコンのトランジション |
| 名前 | 説明 |
|---|---|
--border-color | チェックボックスアイコンの枠線の色 |
--border-color-checked | チェック済みの場合のチェックボックスアイコンの枠線の色 |
--border-radius | チェックボックスアイコンの角丸の半径 |
--border-style | チェックボックスアイコンの枠線のスタイル |
--border-width | チェックボックスアイコンの枠線の幅 |
--checkbox-background | チェックボックスアイコンの背景 |
--checkbox-background-checked | チェック済みの場合のチェックボックスアイコンの背景 |
--checkmark-color | チェック済みの場合のチェックボックスチェックマークの色 |
--checkmark-width | チェックボックスチェックマークの線の太さ |
--size | チェックボックスアイコンのサイズ |
--transition | チェックボックスアイコンのトランジション |
Slots
| 名前 | 説明 |
|---|---|
| `` | チェックボックスに関連付けるラベルテキスト。"labelPlacement"プロパティを使用して、チェックボックスに対するラベルの配置場所を制御します。 |