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"プロパティを使用して、チェックボックスに対するラベルの配置場所を制御します。 |