ButtonGroup 按钮组
按钮组:将多个 oas-button 组合为一个选值组,相邻按钮圆角合并、hover 只亮当前项。
基本用法
基础按钮组
类型与尺寸透传
type / size 会统一透传给组内所有子按钮。size 支持 xs / small / medium(默认)/ large / xl 五档。
类型与尺寸透传
变体与圆角透传
variant / round 与 type / size 一样统一透传给组内所有子按钮:组上设一次,子按钮统一应用。variant 支持 solid(默认)/ outlined / dashed / filled / text / link 六种形态,取值与 oas-button 一致;round 让子按钮呈胶囊圆角。
变体与圆角透传
单选
通过 value 声明当前选中项,点击派发 oas-change,detail 为 { value }。
单选选值组
多选
加 multiple 开启多选,value 用逗号分隔多个选中值,点击派发 oas-change,detail 为 { value: [] }。
多选选值组
可访问名称
aria-label 为按钮组容器设置可访问名称,屏幕阅读器将其朗读为一个可聚焦的按钮组;未设置时走内置 i18n「按钮组」。同页存在多个按钮组时,用名称区分它们。
aria-label 可访问名称
纵向
纵向按钮组
Spread 均分铺满
spread 让组内按钮等宽均分铺满容器宽度(移动端操作栏 / 表单底部按钮组的常见形态)。与 type / size / variant / pill 等组合使用。
Spread 均分铺满
禁用与混排
disabled 禁用整个组;组内无 value 属性的按钮为普通按钮,不参与选值。
禁用与混排
Pill 胶囊形态
pill 让整个按钮组呈胶囊形态:首/尾按钮圆角使用 --oas-radius-full(999px),横向首左圆/尾右圆、纵向首上圆/尾下圆,中间按钮保持直角。
Pill 胶囊形态
分隔符
组内可放 <oas-button-group-separator> 渲染一条分隔线:横向组为 1px 竖线、纵向组为 1px 横线(方向随组朝向自动同步)。分隔符贴合相邻按钮、不参与圆角合并,建议放在按钮 / 嵌套组之间。
分隔符
嵌套组
oas-button-group 内可再嵌 oas-button-group,嵌套组作为整体一项参与贴合与圆角合并:外层把首/尾圆角经 --oas-button-group-start-radius / --oas-button-group-end-radius 穿透给嵌套组首尾按钮。嵌套组作为整体独立管理内部按钮(外层 type / size 不透传),外层 disabled 会整体禁用嵌套组。
嵌套组
拆分按钮(Split Button)
button-group + oas-dropdown split 编排拆分按钮:主按钮触发 oas-action(执行主操作),箭头按钮展开下拉菜单(菜单选择走 oas-select)。
拆分按钮(Split Button)
组合用法
按钮组与浮层、输入框等现有组件编排组合。
按钮 + 浮层
按钮 + 输入
工具栏(多组组合)
API
属性
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
aria-label | 组容器可访问名称(默认走 i18n「按钮组」) | — | — |
disabled | 禁用整个组 | boolean | — |
multiple | 多选模式 | boolean | — |
pill | 胶囊形态:组整体首尾大圆角(--oas-radius-full / 999px) | — | — |
round | 组级 round 圆角透传子按钮(组设一次,子按钮统一胶囊圆角) | boolean | — |
size | 透传给子按钮的尺寸 | string | — |
spread | 组内按钮 flex:1 均分铺满容器宽度(移动端操作栏/表单底部按钮组) | — | — |
type | 透传给子按钮的类型 | string | — |
value | 选中值(单选为单值,多选用逗号分隔) | string | — |
variant | 组级 variant 形态透传子按钮(组设一次,子按钮统一应用) | string | — |
vertical | 纵向堆叠,圆角合并方向改为上下 | boolean | — |
事件
| 事件 | 说明 |
|---|---|
oas-change | 选中变化。单选 detail: { value };多选 detail: { value: [] } |
插槽
| 名称 | 说明 |
|---|---|
| 默认 | — |
说明:子按钮通过
value属性声明其选值;不带value的子按钮是普通按钮,不参与选值、不派发oas-change。选中态通过子按钮aria-pressed表达,可用oas-button[aria-pressed='true']自定义选中样式。