跳至主要内容
版本:v8

ion-checkbox

阴影

复选框允许从一组选项中选择多个选项。激活时,它们显示为已选中(打勾)。单击复选框将切换 `checked` 属性。也可以通过设置 `checked` 属性以编程方式选中它们。

基本用法

标签位置

开发人员可以使用 `labelPlacement` 属性来控制标签相对于控件的位置。此属性反映了 flexbox `flex-direction` 属性。

对齐方式

开发人员可以使用 `alignment` 属性来控制标签和控件在横轴上的对齐方式。此属性反映了 flexbox `align-items` 属性。

注意

可以使用 `alignment` 属性对齐堆叠的复选框。当标签和控件需要水平居中时,这很有用。

对齐

开发人员可以使用 `justify` 属性来控制标签和控件在一行上的排列方式。此属性反映了 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 中引入了更简单的复选框语法。这种新语法减少了设置复选框所需的样板代码,解决了可访问性问题,并改善了开发人员体验。

开发人员可以一次迁移一个复选框。虽然开发人员可以继续使用旧版语法,但我们建议尽快迁移。

使用现代语法

使用现代语法涉及删除 `ion-label` 并将标签直接传递到 `ion-checkbox` 中。可以使用 `ion-checkbox` 上的 `labelPlacement` 属性配置标签的位置。可以使用 `ion-checkbox` 上的 `justify` 属性控制标签和控件在一行上的排列方式。

<!-- 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
类型布尔值
默认false

color

描述要从应用程序颜色调色板中使用的颜色。默认选项包括:`“primary”`、`“secondary”`、`“tertiary”`、`“success”`、`“warning”`、`“danger”`、`“light”`、`“medium”` 和 `“dark”`。有关颜色的更多信息,请参阅 主题
属性color
类型"danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string | undefined
默认undefined

disabled

描述如果为 `true`,则用户无法与复选框交互。
属性disabled
类型布尔值
默认false

indeterminate

描述如果为 `true`,则复选框在视觉上将显示为不确定。
属性indeterminate
类型布尔值
默认false

justify

描述如何在同一行内排列标签和复选框。"start": 标签和复选框将在 LTR 中显示在左侧,在 RTL 中显示在右侧。"end": 标签和复选框将在 LTR 中显示在右侧,在 RTL 中显示在左侧。"space-between": 标签和复选框将在该行的两端出现,两元素之间留有间距。设置此属性会将复选框的display更改为block
属性对齐方式
类型"end" | "space-between" | "start" | 未定义
默认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'

事件

名称描述冒泡
ionBlur复选框失去焦点时发出。true
ionChange当选中属性由于用户操作(如点击)而发生改变时发出。

如果以编程方式设置checked属性,此事件不会发出。
true
ionFocus复选框获得焦点时发出。true

方法

此组件没有公共方法可用。

CSS 阴影部分

名称描述
container复选框标记的容器。
label描述复选框的标签文本。
mark用于指示选中状态的勾号。

CSS 自定义属性

名称描述
--border-color复选框图标的边框颜色
--border-color-checked复选框图标选中时的边框颜色
--border-radius复选框图标的边框半径
--border-style复选框图标的边框样式
--border-width复选框图标的边框宽度
--checkbox-background复选框图标的背景
--checkbox-background-checked复选框图标选中时的背景
--checkmark-color复选框勾号选中时的颜色
--checkmark-width复选框勾号的描边宽度
--size复选框图标的大小
--transition复选框图标的过渡

插槽

名称描述
``与复选框关联的标签文本。使用 "labelPlacement" 属性来控制标签相对于复选框的位置。