React Bootstrap logoReact Bootstrap

Progress

基础反馈

基于 Bootstrap 5 的进度条组件,用于展示任务或流程的完成情况,支持标签、自定义高度、8 种颜色变体、条纹与条纹动画、堆叠分段以及手动组合多个进度条

Component Demo

Basic usage and examples of the Progress component

基础用法

Progress 默认渲染 `.progress` 容器与内部 `.progress-bar`,now 会同时写入 `aria-valuenow` 与进度条宽度

标签

25%
超出进度条宽度的长标签,通过 barProps 添加 overflow-visible 与 text-dark

children 渲染在 `.progress-bar` 内作为标签;`.progress-bar` 默认 `overflow: hidden` 会裁剪超长文本,可通过 barProps 追加 `overflow-visible` 与文字颜色类

高度

25%

height 只作用于外层 `.progress`(写入 `--bs-progress-height` 变量),内部进度条与条纹尺寸会自动跟随

背景色

75%
50%

variant 渲染 `bg-*` 工具类;为彩色进度条添加标签时建议同时开启 textBg,改用 `text-bg-*` 以获得足够的文字对比度

多个进度条

ProgressStacked 渲染 `.progress-stacked`;位于其中的 Progress 会自动把宽度写到自身容器上,并继承堆叠容器的 height,无需额外配置

条纹

striped 为进度条渲染 `progress-bar-striped`,以 CSS 渐变在背景色之上叠加条纹

条纹动画

animated 渲染 `progress-bar-animated` 并自动补上条纹类;用户开启“减少动态效果”时动画会自动停止

手动组合

bar 设为 `false` 时 children 直接渲染在 `.progress` 内,可自由组合多个 ProgressBar;此时外层 now 表示整体进度,内部分段仅作展示。ProgressBar 未传 now 时不写内联宽度,可改用 `w-*` 工具类

交互示例

40%

通过 state 驱动 now 即可获得受控进度,当前进度:40%

API Documentation

Complete API reference for the Progress component

Props

Progress

属性名类型默认值描述
animatedbooleanfalse是否启用条纹动画,渲染 `progress-bar-animated` 类,并自动附加 `progress-bar-striped` 以保证条纹可见
asElementType'div'外层 `.progress` 容器渲染的元素类型
barbooleantrue是否自动渲染内部 `.progress-bar`;设为 `false` 时 children 直接渲染在 `.progress` 内,便于手动组合多个 `ProgressBar`
barAsElementType'div'内部 `.progress-bar` 渲染的元素类型
barPropsProgressBarProps-透传给内部 `ProgressBar` 的属性,可覆盖自动推导的类名、样式与内容
childrenReactNode-进度条标签内容,默认渲染在内部 `.progress-bar` 中
classNamestring-自定义类名,作用于外层 `.progress` 容器
heightnumber | string-进度条高度,写入 `--bs-progress-height` CSS 变量,数字按 px 处理;未设置时继承 `ProgressStacked` 的高度
labelstring'progress'无障碍名称,渲染为外层容器的 `aria-label`;传入 `aria-labelledby` 时自动省略
maxnumber100最大值,渲染 `aria-valuemax` 并参与宽度百分比计算
minnumber0最小值,渲染 `aria-valuemin` 并参与宽度百分比计算
nownumber0当前值,渲染 `aria-valuenow`,并按 `(now - min) / (max - min)` 计算宽度百分比;结果自动裁剪到 0% ~ 100%
rolestring'progressbar'无障碍角色,Bootstrap 5.3 起该角色与 `aria-value*` 均位于外层 `.progress` 上
stripedbooleanfalse是否显示条纹,渲染 `progress-bar-striped` 类
textBgbooleanfalse是否使用 `text-bg-*` 替代 `bg-*`,让标签文字自动获得足够对比度,适合带标签的彩色进度条
variantProgressVariant-进度条颜色变体,为 `.progress-bar` 渲染 `bg-*`(或 `text-bg-*`)工具类
...restHTMLAttributes-外层容器的所有原生属性(如 `style`、`aria-labelledby` 等)

ProgressBar

属性名类型默认值描述
animatedbooleanfalse是否启用条纹动画,渲染 `progress-bar-animated` 类,并自动附加条纹类
asElementType'div'渲染的元素类型
childrenReactNode-进度条标签内容
classNamestring-自定义类名,可配合 `w-*`、`overflow-visible` 等工具类使用
maxnumber100最大值,参与宽度百分比计算
minnumber0最小值,参与宽度百分比计算
nownumber-当前值,提供时按百分比写入内联 `width`;未提供时不设置宽度,可改用 `w-*` 工具类
stripedbooleanfalse是否显示条纹,渲染 `progress-bar-striped` 类
textBgbooleanfalse是否使用 `text-bg-*` 替代 `bg-*`
variantProgressVariant-颜色变体,渲染 `bg-*`(或 `text-bg-*`)工具类
...restHTMLAttributes-根元素的所有原生属性(如 `style`、`aria-hidden` 等)

ProgressStacked

属性名类型默认值描述
asElementType'div'外层 `.progress-stacked` 容器渲染的元素类型
childrenReactNode-堆叠内容,通常为多个 `Progress`,每个 `Progress` 代表一个分段
classNamestring-自定义类名
heightnumber | string-堆叠进度条高度,写入 `--bs-progress-height` CSS 变量,数字按 px 处理;同时下发给未单独设置 height 的子 `Progress`
...restHTMLAttributes-根元素的所有原生属性(如 `style`、`aria-label` 等)

Type Definitions

ProgressBarProps

进度条内层组件属性接口

export interface ProgressBarProps extends HTMLAttributes<HTMLElement> {
  animated?: boolean;
  as?: ElementType;
  children?: ReactNode;
  className?: string;
  max?: number;
  min?: number;
  now?: number;
  striped?: boolean;
  textBg?: boolean;
  variant?: ProgressVariant;
}

ProgressProps

进度条组件属性接口

export interface ProgressProps extends HTMLAttributes<HTMLElement> {
  animated?: boolean;
  as?: ElementType;
  bar?: boolean;
  barAs?: ElementType;
  barProps?: ProgressBarProps;
  children?: ReactNode;
  className?: string;
  height?: number | string;
  label?: string;
  max?: number;
  min?: number;
  now?: number;
  role?: string;
  striped?: boolean;
  textBg?: boolean;
  variant?: ProgressVariant;
}

ProgressStackedContextValue

堆叠进度条上下文值,可通过 `useProgressStacked` 获取(不在堆叠内返回 `null`)

export interface ProgressStackedContextValue {
  height?: number | string;
}

ProgressStackedProps

堆叠进度条组件属性接口

export interface ProgressStackedProps extends HTMLAttributes<HTMLElement> {
  as?: ElementType;
  children?: ReactNode;
  className?: string;
  height?: number | string;
}

ProgressVariant

进度条颜色变体类型

export type ProgressVariant =
  'danger' | 'dark' | 'info' | 'light' | 'primary' | 'secondary' | 'success' | 'warning';