Skip to content

Checkbox 复选框 ​

新粗野主义风格的复选框,基于 reka-ui 的 CheckboxRoot 原语构建,带勾选指示器。

预览 ​

Preview
默认
主要
危险
不确定状态(Minus 图标)
自定义 aria-label

安装 ​

pnpm dlx brutx-vue@latest add checkbox

用法 ​

vue
<script setup>
import { ref } from 'vue'
import { Checkbox } from 'brutx-ui-vue'

const checked = ref(false)
</script>

<template>
    <div class="flex items-center gap-3">
        <Checkbox v-model:checked="checked" />
        <span class="text-sm font-bold">Accept terms</span>
    </div>
</template>

变体 ​

变体说明
default默认背景,标准前景色
primaryPrimary(珊瑚色)背景
secondarySecondary(薄荷青)背景
accentAccent(黄色)背景
dangerDanger(红色)背景
vue
<template>
    <Checkbox variant="primary" />
</template>

尺寸 ​

尺寸说明
sm小尺寸
default默认尺寸
lg大尺寸

搭配 Label ​

vue
<script setup>
import { ref } from 'vue'
import { Checkbox, Label } from 'brutx-ui-vue'

const checked = ref(false)
</script>

<template>
    <div class="flex items-center gap-3">
        <Checkbox v-model:checked="checked" id="terms" />
        <Label for="terms">Accept terms and conditions</Label>
    </div>
</template>

禁用状态 ​

vue
<script setup>
import { Checkbox } from 'brutx-ui-vue'
</script>

<template>
    <Checkbox disabled />
</template>

不确定状态 ​

将 checked 设置为 'indeterminate' 可展示不确定状态,此时指示器显示 Minus(减号)图标,常用于"部分选中"等层级选择场景。

非受控模式同样支持:<Checkbox defaultValue="indeterminate" /> 初始渲染 Minus 图标且 aria-checked="mixed"。按 reka-ui 语义,用户点击后状态切换为 checked,不会自动回到不确定态。

vue
<script setup>
import { Checkbox } from 'brutx-ui-vue'
</script>

<template>
    <Checkbox :checked="'indeterminate'" />
</template>

API 参考 ​

Checkbox — 属性
名称类型默认值说明
class
string | undefined
undefined
追加到复选框根交互元素的 CSS 类。
详情

声明类型

string | undefined

默认值详情

解析值
undefined

来源

Checkbox.vue:14

packages/ui/src/components/checkbox/Checkbox.vue

checked
boolean | "indeterminate" | undefined
undefined
受控选中状态,可为选中、未选中或 indeterminate;省略时组件使用内部状态。
详情

声明类型

boolean | "indeterminate" | undefined

字面量

  • "indeterminate"
  • false
  • true

默认值详情

解析值
undefined

来源

Checkbox.vue:15

packages/ui/src/components/checkbox/Checkbox.vue

defaultValue
boolean | "indeterminate" | undefined
undefined
非受控模式的初始状态,仅在 checked 未设置时生效。
详情

声明类型

boolean | "indeterminate" | undefined

字面量

  • "indeterminate"
  • false
  • true

默认值详情

解析值
undefined

来源

Checkbox.vue:20

packages/ui/src/components/checkbox/Checkbox.vue

disabled
boolean | undefined
false
禁用复选框交互并传递禁用状态给底层 Reka UI 原语。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

解析值
false

来源

Checkbox.vue:21

packages/ui/src/components/checkbox/Checkbox.vue

variant
"accent" | "danger" | "default" | "primary" | "secondary" | undefined
"default"
选择复选框的颜色样式变体。
详情

声明类型

NonNullable<"default" | "primary" | "secondary" | "danger" | "accent" | null | undefined> | undefined

字面量

  • "accent"
  • "danger"
  • "default"
  • "primary"
  • "secondary"

默认值详情

解析值
"default"

来源

Checkbox.vue:22

packages/ui/src/components/checkbox/Checkbox.vue

size
"default" | "lg" | "sm" | undefined
"default"
设置复选框及内部状态图标的尺寸。
详情

声明类型

NonNullable<"default" | "lg" | "sm" | null | undefined> | undefined

字面量

  • "default"
  • "lg"
  • "sm"

默认值详情

解析值
"default"

来源

Checkbox.vue:23

packages/ui/src/components/checkbox/Checkbox.vue

ariaLabel
string | undefined
undefined
复选框的无障碍名称;未提供时使用本地化默认文案。
详情

声明类型

string | undefined

默认值详情

解析值
undefined

来源

Checkbox.vue:25

packages/ui/src/components/checkbox/Checkbox.vue

name
string | undefined
undefined
原生表单字段名;设置后随所属表单提交复选框值。
详情

声明类型

string | undefined

默认值详情

解析值
undefined

来源

Checkbox.vue:27

packages/ui/src/components/checkbox/Checkbox.vue

value
可空
AcceptableValue | undefined
undefined
随表单提交的值;传递给 Reka UI 根原语,未设置时使用其原生默认值 on。
详情

声明类型

AcceptableValue | undefined

字面量

  • null

默认值详情

解析值
undefined

来源

Checkbox.vue:29

packages/ui/src/components/checkbox/Checkbox.vue

required
boolean | undefined
false
设置原生表单必填状态并传递给底层原语。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

解析值
false

来源

Checkbox.vue:31

packages/ui/src/components/checkbox/Checkbox.vue

Checkbox — 事件
名称签名或类型说明
@update:checked
[value: boolean | "indeterminate"]
选中状态变化时发出新的布尔值或 indeterminate,可与 v-model:checked 配合。
详情

声明类型

[value: boolean | "indeterminate"]

字面量

  • "indeterminate"
  • false
  • true

来源

Checkbox.vue

packages/ui/src/components/checkbox/Checkbox.vue

可访问性 ​

  • 键盘操作:支持 Space 键切换选中状态
  • ARIA 属性:Checkbox 默认通过 locale 提供 aria-label(中文为"复选框"),未提供时回退到 t('checkbox.check')。当毗邻可见文本已能描述用途时可省略,否则建议通过 ariaLabel 提供更具体的描述
  • 焦点管理:使用 --brutal-ring 令牌显示可见聚焦环
vue
<script setup>
import { ref } from 'vue'
import { Checkbox, Label } from 'brutx-ui-vue'

const checked = ref(false)
</script>

<template>
    <div class="flex items-center gap-3">
        <Checkbox v-model:checked="checked" id="marketing" ariaLabel="接收营销邮件" />
        <Label for="marketing">接收营销邮件</Label>
    </div>
</template>

蛮力铸就。