JGuang

分段控制器

Segmented · Ant Design

交互预览
npm install antd@6.6.5 @ant-design/icons@6.3.4 dayjs@1.11.23

分段控制器

用于展示多个选项并允许用户选择其中单个选项。

自 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将宽度调整为父元素宽度的选项booleanfalse×
classNames用于自定义 Segmented 组件内部各语义化结构的 class,支持对象或函数Record<SemanticDOM, string> | (info: { props }) => Record<SemanticDOM, string>-6.0.0
defaultValue默认选中的值string | numberoptions 首项的值×
disabled是否禁用booleanfalse×
onChange选项变化时的回调函数function(value: string | number)×
options数据化配置选项内容string[] | number[] | SegmentedItemType[][]×
orientation排列方向horizontal | verticalhorizontal×
size控件尺寸large | medium | smallmedium×
styles用于自定义 Segmented 组件内部各语义化结构的行内 style,支持对象或函数Record<SemanticDOM , CSSProperties> | (info: { props }) => Record<SemanticDOM , CSSProperties>-6.0.0
vertical排列方向,与 orientation 同时存在,以 orientation 优先booleanfalse5.21.0×
value当前选中的值string | number×
shape形状default | rounddefault5.24.0×
nameSegmented 下所有 input[type="radio"] 的 name 属性。若未设置,则将回退到随机生成的名称string5.23.0×

SegmentedItemType

属性描述类型默认值版本
className自定义类名string-
disabled分段项的禁用状态booleanfalse
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 覆盖。本表不伪造静态默认值。

令牌类型原生说明
itemColorstring选项文本颜色
itemHoverColorstring选项悬浮态文本颜色
itemHoverBgstring选项悬浮态背景颜色
itemActiveBgstring选项激活态背景颜色
itemSelectedBgstring选项选中时背景颜色
itemSelectedColorstring选项选中时文字颜色
trackPaddingstring | numberSegmented 控件容器的 padding
trackBgstringSegmented 控件容器背景色

声明来源: 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添加在组件最外层的 classNamestring-
autoFocus自动获取焦点,仅对表单类、链接、交互容器等可聚焦元素生效booleanfalse

安装并复现示例

npm install antd@6.6.5 @ant-design/icons@6.3.4 dayjs@1.11.23

使用 ConfigProvider 和原生 App,并单独配置 dayjs 语言。每个示例在查看代码中列出完整源码文件和额外固定依赖。示例名称用于选择演示,不是组件通用属性。主题、语言与 SSR 初始化见资源安装指南。

原生类型参考

源码查看器包含未修改的原生实现和以下声明文件,继承类型仍位于原生包中。代码中的英文注释保留为源码参考。

  • vendor/components/segmented/index.tsx
  • vendor/components/segmented/style/index.ts

来源与许可

https://github.com/ant-design/ant-design/tree/4a39f54842eade4e565ab336ef6097cd7e723cdd

保留原生中英文正文与可执行示例;官网专用的嵌入章节和令牌表格在本地展开。Ant Design 使用 MIT 许可,另列依赖的许可证也需保留。上传预览禁止向外发起请求,不提供后端服务。