复选框
当用户在一系列选项中遇到多个选择时,复选框为用户提供二元选择。
简介
复选框为用户提供二元选择(是或否,开或关)的图形化表示。它们最常以系列形式呈现,让用户可以做出多个选择。
Joy UI Checkbox 组件取代了原生的 HTML <input type="checkbox">
元素,并为样式和可访问性提供了扩展选项。
<Checkbox />
Playground
基础
import Checkbox from '@mui/joy/Checkbox';
基本 Checkbox 组件是设置为未选中状态的单个输入框。使用 label
属性提供文本,并在输入框应默认选中时添加 defaultChecked
。
自定义
变体
Checkbox 组件支持 Joy UI 的四种全局变体:solid
、soft
、outlined
和 plain
。默认情况下,当未选中时,Checkbox 设置为 outlined
;当选中时,变体更改为 solid
。
将 variant
属性添加到您的 Checkbox 会覆盖此默认行为。尝试选中和取消选中以下演示中的复选框,以查看差异
尺寸
Checkbox 组件提供三种尺寸:sm
、md
(默认)和 lg
。
颜色
主题中包含的每个调色板都可通过 color
属性使用。
图标
默认情况下,Checkbox 组件在未选中时为空。使用 uncheckedIcon
属性为未选中状态添加自定义图标。您也可以使用 checkedIcon
来自定义选中状态。
悬停时出现
您可以使用 uncheckedIcon
作为选中状态的“预览”,使其在用户悬停在空 Checkbox 上时出现。
下面的演示展示了如何通过使用 svg
选择器定位图标并应用 opacity
以获得平滑效果
无图标
使用 disableIcon
属性完全删除图标。在这种情况下,Checkbox 的状态通过应用于标签的变体类型来传达。尝试单击以下演示中的 Checkbox 标签,以查看其工作原理
披萨配料
焦点轮廓
默认情况下,焦点轮廓包裹 Checkbox 输入框及其标签。要设置焦点轮廓,使其仅包裹输入框,请定位 checkboxClasses.checkbox
类并添加 position: 'relative'
,如下面的演示所示
可点击容器
使用 overlay
属性将焦点轮廓从 Checkbox 移动到其容器,使整个容器可点击以切换 Checkbox 的状态。这适用于任何具有定位的包装器元素——下面的演示使用 Sheet(默认情况下,它具有 relative
位置)
不确定状态
默认的 Checkbox 是双态的:用户可以在选中和未选中之间切换。
还有一种三态或不确定状态的 Checkbox 选项,它支持一种称为“部分选中”的状态。
这种不确定状态通常用于传达一组 Checkbox 中只有部分被选中的事实。因此,它通常保留给可以控制其子项状态的父 Checkbox。
下面的演示展示了如何在父 Checkbox 上实现 indeterminate
属性,该属性监视其子项中的选中状态。如果只有一个子项被选中,则父项显示不确定状态。单击父 Checkbox 会切换选择和取消选择所有子项。
辅助文本
import FormControl from '@mui/joy/FormControl';
import FormHelperText from '@mui/joy/FormHelperText';
使用 Form Control 和 Form Helper Text 组件为 Checkbox 添加描述。Checkbox 将通过 aria-describedby
属性链接到辅助文本。
组
要对多个 Checkbox 进行分组,请将它们包装在带有 role="group"
的容器组件(如 Box)中。
与 List 组件结合使用,以确保一致的间距,并使屏幕阅读器能够将 Checkbox 组解释为列表。 了解有关复选框的无障碍设计模式的更多信息,请参阅 W3C 文档。
三明治酱料
过滤状态
此示例使用 List Item 和 Checkbox 组件可用的变体和颜色来传达状态更改。
过滤状态
8
24
过滤成员
此示例使用 CSS flexDirection: 'rowReverse'
属性来定位标签和图标。不要忘记使用 label
属性来确保正确的 Checkbox 可访问性。
团队成员
选择便利设施
解剖结构
Checkbox 组件由一个根 <span>
组成,它包装了输入框和 <label>
(如果存在)。请注意,实际的 <input type="checkbox">
双重嵌套在分别代表 checkbox
和 action
插槽的 <span>
元素中。
<span class="MuiCheckbox-root">
<span class="MuiCheckbox-checkbox">
<span class="MuiCheckbox-action">
<input type="checkbox" class="MuiCheckbox-input" value />
</span>
</span>
<label class="MuiCheckbox-label">
<!-- label text -->
</label>
</span>
无样式
使用 Base UI Checkbox 完全拥有组件的设计,无需覆盖 Material UI 或 Joy UI 样式。此组件的无样式版本是重度自定义和更小捆绑包大小的理想选择。