Skip to content

Progress 进度条

用于展示操作进度, 告知用户当前状态和预期。

直线进度条

Progress 组件设置 percentage 属性即可, 表示进度条对应的百分比。该属性必填, 并且必须在 0-100 的范围内。你可以设置 format 来自定义文字显示的格式。

<template>
  <div class="max-w-600">
    <px-progress :percentage="50" class="mb-15" />
    <px-progress :percentage="100" :format="format" class="mb-15" />
    <px-progress :percentage="100" status="success" class="mb-15" />
    <px-progress :percentage="100" status="warning" class="mb-15" />
    <px-progress :percentage="50" status="danger" class="mb-15" />
  </div>
</template>

<script lang="ts" setup>
const format = (percentage: number) =>
  percentage === 100 ? 'Full' : `${percentage}%`
</script>

进度条内显示百分比标识

百分比不占用额外控件, 适用于文件上传等场景

Progress 组件可通过 stroke-width 属性更改进度条的高度, 并可通过 text-inside 属性来改变进度条内部的文字。

<template>
  <div class="max-w-600">
    <px-progress
      :percentage="70"
      :text-inside="true"
      :stroke-width="24"
      class="mb-15"
    />
    <px-progress
      :percentage="100"
      status="success"
      :text-inside="true"
      :stroke-width="24"
      class="mb-15"
    />
    <px-progress
      :percentage="80"
      status="warning"
      :text-inside="true"
      :stroke-width="24"
      class="mb-15"
    />
    <px-progress
      :percentage="50"
      status="danger"
      :text-inside="true"
      :stroke-width="24"
      class="mb-15"
    />
  </div>
</template>

自定义进度条颜色

可以通过 color 属性来设置进度条颜色。该属性当前仅支持十六进制颜色值

<template>
  <div class="max-w-600">
    <px-progress :percentage="percentage" color="#6f9bc6" class="mb-15" />
    <px-progress :percentage="percentage" color="#a172d0" class="mb-15" />
    <px-progress :percentage="percentage" color="#d80835" class="mb-15" />
    <px-progress :percentage="percentage" color="#eda01f" class="mb-15" />
    <div>
      <px-button-group>
        <px-button icon="minus-solid" @click="decrease" />
        <px-button icon="plus-solid" @click="increase" />
      </px-button-group>
    </div>
  </div>
</template>

<script lang="ts" setup>
import { ref } from 'vue'

const percentage = ref(20)

const increase = () => {
  percentage.value += 10
  if (percentage.value > 100) {
    percentage.value = 100
  }
}
const decrease = () => {
  percentage.value -= 10
  if (percentage.value < 0) {
    percentage.value = 0
  }
}
</script>

自定义内容

通过默认插槽添加自定义内容

<template>
  <div class="max-w-600">
    <px-progress :percentage="50" :stroke-width="24" class="mb-15">
      <px-button size="small">Content</px-button>
    </px-progress>
    <px-progress
      :text-inside="true"
      :stroke-width="24"
      :percentage="50"
      status="success"
      class="mb-15"
    >
      <span>Content</span>
    </px-progress>
    <px-progress
      :text-inside="true"
      :stroke-width="24"
      :percentage="50"
      status="danger"
      class="mb-15"
    >
      <template #default="{ percentage }">
        {{ percentage + '°' }}
      </template>
    </px-progress>
  </div>
</template>

动画进度条

使用 indeterminate 属性来设置不确定的进度, duration 来控制动画持续时间。

<template>
  <div class="max-w-600">
    <px-progress :percentage="50" indeterminate :duration="1" class="mb-15" />
    <px-progress
      :percentage="100"
      :format="format"
      indeterminate
      class="mb-15"
    />
    <px-progress
      :percentage="100"
      status="success"
      indeterminate
      class="mb-15"
    />
    <px-progress
      :percentage="100"
      status="warning"
      indeterminate
      class="mb-15"
    />
    <px-progress
      :percentage="50"
      status="danger"
      indeterminate
      :duration="6"
      class="mb-15"
    />
  </div>
</template>

<script lang="ts" setup>
const format = (percentage: number) =>
  percentage === 100 ? 'Full' : `${percentage}%`
</script>

条纹进度条

通过设置 striped 属性来获取条纹进度条, 也可以使用 striped-flow 属性获取条纹进度条流动效果, 使用 duration 属性控制流速

<template>
  <div class="max-w-600">
    <px-progress class="mb-15" :percentage="50" :stroke-width="24" striped />
    <px-progress
      class="mb-15"
      :percentage="50"
      :stroke-width="24"
      striped
      color="#626aef"
    />
    <px-progress
      class="mb-15"
      :percentage="75"
      :stroke-width="24"
      striped
      striped-flow
      :duration="1"
      status="success"
    />
    <px-progress
      class="mb-15"
      :percentage="100"
      :stroke-width="24"
      striped
      striped-flow
      status="warning"
    />
    <px-progress
      class="mb-15"
      :percentage="30"
      :stroke-width="24"
      striped
      striped-flow
      :duration="6"
      status="danger"
    />
  </div>
</template>

棋盘进度条

通过设置 checker 属性来获取棋盘进度条

<template>
  <div class="max-w-600">
    <px-progress :percentage="50" checker :stroke-width="28" class="mb-15" />
    <px-progress
      :percentage="100"
      status="success"
      checker
      :stroke-width="28"
      class="mb-15"
    />
    <px-progress
      :percentage="100"
      status="warning"
      checker
      :stroke-width="28"
      class="mb-15"
    />
    <px-progress
      :percentage="50"
      status="danger"
      checker
      :stroke-width="28"
      class="mb-15"
    />
  </div>
</template>

Progress API

Props

NameDescriptionTypeDefault
percentage进度条百分比number0
status进度条类型enum - primary | success | warning | dangerprimary
stroke-width进度条宽度number16
text-inside文字显示内置在进度条内booleanfalse
indeterminate是否为动画进度条booleanfalse
duration动画/流动速度number4
color自定义颜色string-
show-text是否显示进度条文字booleantrue
striped是否为条纹进度条booleanfalse
striped-flow是否为条纹进度条流动booleanfalse
checker是否为棋盘进度条booleanfalse
format进度条文字显示格式function-

Slots

NameDescription
default默认插槽,用于设置 Progress 的内容描述
本站访客数 人次 本站总访问量