分段控制器
用于展示多个选项并允许用户选择其中单个选项。
自 antd@4.20.0 版本开始提供该组件。
何时使用
- 用于展示多个选项并允许用户选择其中单个选项;
- 当切换选中选项时,关联区域的内容会发生变化。
代码演示
- 基本 ·
basic - 垂直方向 ·
vertical - Block 分段选择器 ·
block - 胶囊形状 ·
shape - 不可用 ·
disabled - 受控模式 ·
controlled - 自定义渲染 ·
custom - 动态数据 ·
dynamic - 三种大小 ·
size - 设置图标 ·
with-icon - 只设置图标 ·
icon-only - 配合 name 使用 ·
with-name - 自定义语义结构的样式和类 ·
style-class
API
通用属性参考:通用属性
自
antd@4.20.0版本开始提供该组件。
Segmented
| 参数 | 说明 | 类型 | 默认值 | 版本 | 全局配置 |
|---|---|---|---|---|---|
| block | 将宽度调整为父元素宽度的选项 | boolean | false | × | |
| classNames | 用于自定义 Segmented 组件内部各语义化结构的 class,支持对象或函数 | Record<SemanticDOM, string> | (info: { props }) => Record<SemanticDOM, string> | - | 6.0.0 | |
| defaultValue | 默认选中的值 | string | number | options 首项的值 | × | |
| disabled | 是否禁用 | boolean | false | × | |
| onChange | 选项变化时的回调函数 | function(value: string | number) | × | ||
| options | 数据化配置选项内容 | string[] | number[] | SegmentedItemType[] | [] | × | |
| orientation | 排列方向 | horizontal | vertical | horizontal | × | |
| size | 控件尺寸 | large | medium | small | medium | × | |
| styles | 用于自定义 Segmented 组件内部各语义化结构的行内 style,支持对象或函数 | Record<SemanticDOM , CSSProperties> | (info: { props }) => Record<SemanticDOM , CSSProperties> | - | 6.0.0 | |
| vertical | 排列方向,与 orientation 同时存在,以 orientation 优先 | boolean | false | 5.21.0 | × |
| value | 当前选中的值 | string | number | × | ||
| shape | 形状 | default | round | default | 5.24.0 | × |
| name | Segmented 下所有 input[type="radio"] 的 name 属性。若未设置,则将回退到随机生成的名称 | string | 5.23.0 | × |
SegmentedItemType
| 属性 | 描述 | 类型 | 默认值 | 版本 |
|---|---|---|---|---|
| className | 自定义类名 | string | - | |
| disabled | 分段项的禁用状态 | boolean | false | |
| icon | 分段项的显示图标 | ReactNode | - | |
| label | 分段项的显示文本 | ReactNode | - | |
| tooltip | 分段项的工具提示 | string | TooltipProps | - | |
| value | 分段项的值 | string | number | - |
Semantic DOM
| 语义节点 | 原生说明 | 版本 |
|---|---|---|
root | 根元素,设置行内块布局、内边距、背景色、圆角、过渡动画和容器样式 | 6.0.0 |
item | 选项元素,设置相对定位、文本对齐、光标样式、过渡动画、选中态背景色和悬停态样式 | 6.0.0 |
label | 标签内容元素,设置最小高度、行高、内边距、文本省略和内容布局样式 | 6.0.0 |
icon | 图标元素,设置图标的尺寸、颜色和与文本的间距样式 | 6.0.0 |
语义说明来源: vendor/components/segmented/demo/_semantic.tsx
主题变量(Design Token)
类型、继承关系和原生令牌声明保持固定源码原文;默认值由原生主题计算,并可能受 ConfigProvider 覆盖。本表不伪造静态默认值。
| 令牌 | 类型 | 原生说明 |
|---|---|---|
itemColor | string | 选项文本颜色 |
itemHoverColor | string | 选项悬浮态文本颜色 |
itemHoverBg | string | 选项悬浮态背景颜色 |
itemActiveBg | string | 选项激活态背景颜色 |
itemSelectedBg | string | 选项选中时背景颜色 |
itemSelectedColor | string | 选项选中时文字颜色 |
trackPadding | string | number | Segmented 控件容器的 padding |
trackBg | string | Segmented 控件容器背景色 |
声明来源: vendor/components/segmented/style/index.ts
import type { CSSObject } from '@ant-design/cssinjs';
import { unit } from '@ant-design/cssinjs';
import { genFocusOutline, genFocusStyle, resetComponent, textEllipsis } from '../../style';
import type { FullToken, GenerateStyle, GetDefaultToken } from '../../theme/internal';
import { genStyleHooks, mergeToken } from '../../theme/internal';
export interface ComponentToken {
/**
* @desc 选项文本颜色
* @descEN Text color of item
*/
itemColor: string;
/**
* @desc 选项悬浮态文本颜色
* @descEN Text color of item when hover
*/
itemHoverColor: string;
/**
* @desc 选项悬浮态背景颜色
* @descEN Background color of item when hover
*/
itemHoverBg: string;
/**
* @desc 选项激活态背景颜色
* @descEN Background color of item when active
*/
itemActiveBg: string;
/**
* @desc 选项选中时背景颜色
* @descEN Background color of item when selected
*/
itemSelectedBg: string;
/**
* @desc 选项选中时文字颜色
* @descEN Text color of item when selected
*/
itemSelectedColor: string;
/**
* @desc Segmented 控件容器的 padding
* @descEN Padding of Segmented container
*/
trackPadding: string | number;
/**
* @desc Segmented 控件容器背景色
* @descEN Background of Segmented container
*/
trackBg: string;
}
interface SegmentedToken extends FullToken<'Segmented'> {
segmentedPaddingHorizontal: number | string;
segmentedPaddingHorizontalSM: number | string;
}
原生通用属性
Tips: 以下通用属性适用于 antd 大部分组件,不支持的组件会单独说明。
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| style | 自定义样式 | CSSProperties | - |
| className | 自定义类名 | string | - |
| rootClassName | 添加在组件最外层的 className | string | - |
| autoFocus | 自动获取焦点,仅对表单类、链接、交互容器等可聚焦元素生效 | boolean | false |
安装并复现示例
npm install antd@6.6.5 @ant-design/icons@6.3.4 dayjs@1.11.23
使用 ConfigProvider 和原生 App,并单独配置 dayjs 语言。每个示例在查看代码中列出完整源码文件和额外固定依赖。示例名称用于选择演示,不是组件通用属性。主题、语言与 SSR 初始化见资源安装指南。
原生类型参考
源码查看器包含未修改的原生实现和以下声明文件,继承类型仍位于原生包中。代码中的英文注释保留为源码参考。
vendor/components/segmented/index.tsxvendor/components/segmented/style/index.ts
来源与许可
https://github.com/ant-design/ant-design/tree/4a39f54842eade4e565ab336ef6097cd7e723cdd
保留原生中英文正文与可执行示例;官网专用的嵌入章节和令牌表格在本地展开。Ant Design 使用 MIT 许可,另列依赖的许可证也需保留。上传预览禁止向外发起请求,不提供后端服务。