ProComponents, templates & AI tooling
HeroUI
27.7k

ProgressCircle 环形进度条

环形进度指示器,用于展示确定或不确定的进度。

引入

import { ProgressCircle } from '@heroui/react';

用法

import {ProgressCircle} from "@heroui/react";

export function Basic() {
  return (
    <ProgressCircle aria-label="加载中" value={60}>

组件结构

import { ProgressCircle } from '@heroui/react';

export default () => (
  <ProgressCircle aria-label="Loading" value={60}>
    <ProgressCircle.Track>
      <ProgressCircle.TrackCircle />
      <ProgressCircle.FillCircle />
    </ProgressCircle.Track>
  </ProgressCircle>
);

尺寸

import {ProgressCircle} from "@heroui/react";

const SIZE_LABELS = {
  lg: "大",
  md: "中",

颜色

import {ProgressCircle} from "@heroui/react";

const colors = ["default", "accent", "success", "warning", "danger"] as const;

const COLOR_LABELS: Record<(typeof colors)[number], string> = {

不确定进度

在无法确定具体进度时,使用 isIndeterminate

import {ProgressCircle} from "@heroui/react";

export function Indeterminate() {
  return (
    <ProgressCircle isIndeterminate aria-label="加载中">

带标签

import {Label, ProgressCircle} from "@heroui/react";

export function WithLabel() {
  return (
    <div className="flex items-center gap-3">

自定义 SVG 属性

由于每个部分都是可组合组件,你可以直接覆盖 strokeWidthrcxcyviewBox 等 SVG 属性。

import {ProgressCircle} from "@heroui/react";

export function CustomSvg() {
  return (
    <div className="flex items-end gap-6">

样式

传入 Tailwind CSS 类

你可以分别自定义 ProgressCircle 的各个部分:

import { ProgressCircle } from '@heroui/react';

function CustomProgressCircle() {
  return (
    <ProgressCircle aria-label="Loading" value={60}>
      <ProgressCircle.Track>
        <ProgressCircle.TrackCircle />
        <ProgressCircle.FillCircle className="stroke-purple-500" />
      </ProgressCircle.Track>
    </ProgressCircle>
  );
}

自定义组件类

若要自定义 ProgressCircle 组件类,可以使用 @layer components 指令。
了解更多.

@layer components {
  .progress-circle {
    @apply inline-flex;
  }

  .progress-circle__track {
    @apply size-12;
  }

  .progress-circle__fill-circle {
    stroke: purple;
  }
}

HeroUI 遵循 BEM 方法论,确保组件变体与状态可复用且易于自定义。

CSS 类

ProgressCircle 组件使用以下 CSS 类(查看源码样式):

基础与元素类

  • .progress-circle - 基础容器
  • .progress-circle__track - SVG 元素
  • .progress-circle__track-circle - 背景圆环
  • .progress-circle__fill-circle - 进度弧

尺寸类

  • .progress-circle--sm - 小尺寸
  • .progress-circle--md - 中等尺寸(默认)
  • .progress-circle--lg - 大尺寸

颜色类

  • .progress-circle--default - 默认颜色
  • .progress-circle--accent - 强调色
  • .progress-circle--success - 成功色
  • .progress-circle--warning - 警告色
  • .progress-circle--danger - 危险色

API 参考

ProgressCircle Props

继承自 React Aria ProgressBar

Prop类型默认值描述
valuenumber0当前值
minValuenumber0最小值
maxValuenumber100最大值
isIndeterminatebooleanfalse是否为不确定进度
size"sm" | "md" | "lg""md"圆环尺寸
color"default" | "accent" | "success" | "warning" | "danger""accent"进度弧颜色
formatOptionsIntl.NumberFormatOptions{style: 'percent'}数值展示格式
childrenReactNode | (values: ProgressBarRenderProps) => ReactNode-内容或渲染 prop

ProgressBarRenderProps

使用渲染 prop 模式时,会提供以下值:

Prop类型描述
percentagenumber进度百分比(0–100)
valueTextstring格式化后的数值文案
isIndeterminateboolean是否为不确定进度

本页目录