Segmented 分段器
单选的线性分段选择器,用于轻度筛选 / 切换视图,role="radiogroup",可禁用单项。选中态指示器带滑动过渡动画。
基础用法
基础用法
默认选中
受控 value
禁用单项
禁用选项
尺寸
size 支持 small / medium(默认)/ large 三档(对齐输入类控件的尺寸体系;就近跟随 config-provider 的 size 注入):
尺寸
铺满
block 铺满父宽,选项等分:
block 铺满
图标选项
选项的 icon 字段(oas-icons 图标名)渲染在文本前;label 省略时为仅图标形态,图标名自动转可读文本作 aria-label 兜底:
图标选项
仅图标
纵向
direction="vertical" 纵向排列(侧边工具条等场景);键盘导航随之切换为 ↑ / ↓:
纵向
只读
readonly 可聚焦不可改选(与 disabled 的表单语义分立:值只读展示):
readonly
自定义选项渲染
template[slot="option"] 克隆渲染每个选项(data-option-label 元素绑定选项文本,对齐 select 的 option slot 惯例):
option slot
键盘与无障碍
底层为隐藏的原生 radio 组(input[type="radio"],同名成组):Tab 聚焦当前选中项,← / →(纵向 ↑ / ↓)循环切换并跳过禁用项,Home / End 跳转首尾;焦点(roving tabindex)随选中项移动。设置 name 属性时作为内层 radio 组名(未设置时组件自动生成组名,多实例互不干扰)——组件非 form-associated,shadow 内的 radio 不被外层 form 收集提交,name 仅用于组内互斥与键盘语义。
切换事件
oas-change 事件
API
oas-segmented
属性
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
block | 铺满父容器(各项等宽均分) | — | — |
direction | 排列方向:horizontal(默认)/ vertical(联动 aria-orientation 与轴向键) | string | horizontal |
disabled | 禁用整个分段控件(自身显式禁用,或经 config-provider 全局禁用注入继承) | boolean | — |
name | 内层原生 radio 组名(未设自动生成唯一名,多实例互不干扰);仅用于组内互斥与键盘语义——组件非 form-associated,shadow 内 radio 不被外层 form 收集提交 | string | — |
options | [{ label, value, disabled? }] JSON 字符串 | string | [] |
readonly | 只读:可聚焦不可改选(radiogroup aria-readonly) | boolean | — |
size | 尺寸档位 small / medium(默认)/ large | string | medium |
value | 选中值(缺省选第一项,受控属性) | string | — |
Property(JS property;是否写回 attribute 见各行说明)
| Property | 说明 | 类型 | 默认值 |
|---|---|---|---|
value | 当前值:选中项值字符串 | string | — |
事件
| 事件 | 说明 |
|---|---|
oas-change | 切换,detail: { value } |
插槽
| 名称 | 说明 |
|---|---|
template[slot="option"] | 选项自定义模板(<template slot="option">) |
容器 role="radiogroup";每项为原生 <input type="radio"> 底座(label 自身无 role / aria-checked,选中态与可访问名由内部原生 radio 承载;aria-disabled 状态属性保留)。