Progress进度条 - 图1

Progress 进度条

展示操作的当前进度。

何时使用

在操作需要较长时间才能完成时,为用户显示该操作的当前进度和状态。

  • 当一个操作会打断当前界面,或者需要在后台运行,且耗时可能超过2秒时;
  • 当需要显示一个操作完成的百分比时。

代码演示

Progress进度条 - 图2

Progress进度条 - 图3

Progress进度条 - 图4

Progress进度条 - 图5

Progress进度条 - 图6

进度条

标准的进度条。

  1. <template>
  2. <a-progress :percent="30" />
  3. <a-progress :percent="50" status="active" />
  4. <a-progress :percent="70" status="exception" />
  5. <a-progress :percent="100" />
  6. <a-progress :percent="50" :show-info="false" />
  7. </template>

Progress进度条 - 图7

小型进度条

适合放在较狭窄的区域内。

  1. <template>
  2. <div style="width: 170px">
  3. <a-progress :percent="30" size="small" />
  4. <a-progress :percent="50" size="small" status="active" />
  5. <a-progress :percent="70" size="small" status="exception" />
  6. <a-progress :percent="100" size="small" />
  7. </div>
  8. </template>

Progress进度条 - 图8

动态展示

会动的进度条才是好进度条。

  1. <template>
  2. <div>
  3. <a-progress :percent="defaultPercent" />
  4. <a-button-group>
  5. <a-button @click="decline">
  6. <template #icon><minus-outlined /></template>
  7. </a-button>
  8. <a-button @click="increase">
  9. <template #icon><plus-outlined /></template>
  10. </a-button>
  11. </a-button-group>
  12. </div>
  13. </template>
  14. <script lang="ts">
  15. import { MinusOutlined } from '@ant-design/icons-vue';
  16. import { PlusOutlined } from '@ant-design/icons-vue';
  17. import { defineComponent, ref } from 'vue';
  18. export default defineComponent({
  19. components: {
  20. MinusOutlined,
  21. PlusOutlined,
  22. },
  23. setup() {
  24. const defaultPercent = ref<number>(0);
  25. const increase = () => {
  26. const percent = defaultPercent.value + 10;
  27. defaultPercent.value = percent > 100 ? 100 : percent;
  28. };
  29. const decline = () => {
  30. const percent = defaultPercent.value - 10;
  31. defaultPercent.value = percent < 0 ? 0 : percent;
  32. };
  33. return {
  34. defaultPercent,
  35. increase,
  36. decline,
  37. };
  38. },
  39. });
  40. </script>

Progress进度条 - 图9

自定义文字格式

format 属性指定格式。

  1. <template>
  2. <div>
  3. <a-progress type="circle" :percent="75" :format="percent => `${percent} Days`" />
  4. <a-progress type="circle" :percent="100" :format="() => 'Done'" />
  5. <a-progress type="circle" :percent="75">
  6. <template #format="percent">
  7. <span style="color: red">{{ percent }}</span>
  8. </template>
  9. </a-progress>
  10. </div>
  11. </template>

Progress进度条 - 图10

分段进度条

标准的进度条。

  1. <template>
  2. <div>
  3. <a-tooltip title="3 done / 3 in progress / 4 to do">
  4. <a-progress :percent="60" :success-percent="30" />
  5. </a-tooltip>
  6. <a-tooltip title="3 done / 3 in progress / 4 to do">
  7. <a-progress :percent="60" :success-percent="30" type="circle" />
  8. </a-tooltip>
  9. <a-tooltip title="3 done / 3 in progress / 4 to do">
  10. <a-progress :percent="60" :success-percent="30" type="dashboard" />
  11. </a-tooltip>
  12. </div>
  13. </template>

Progress进度条 - 图11

自定义进度条渐变色

linear-gradient 的封装。推荐只传两种颜色。

  1. <template>
  2. <div>
  3. <a-progress
  4. :stroke-color="{
  5. '0%': '#108ee9',
  6. '100%': '#87d068',
  7. }"
  8. :percent="99.9"
  9. />
  10. <a-progress
  11. :stroke-color="{
  12. from: '#108ee9',
  13. to: '#87d068',
  14. }"
  15. :percent="99.9"
  16. status="active"
  17. />
  18. <a-progress
  19. type="circle"
  20. :stroke-color="{
  21. '0%': '#108ee9',
  22. '100%': '#87d068',
  23. }"
  24. :percent="90"
  25. />
  26. <a-progress
  27. type="circle"
  28. :stroke-color="{
  29. '0%': '#108ee9',
  30. '100%': '#87d068',
  31. }"
  32. :percent="100"
  33. />
  34. </div>
  35. </template>

Progress进度条 - 图12

Progress进度条 - 图13

Progress进度条 - 图14

进度圈

圈形的进度。

  1. <template>
  2. <a-progress type="circle" :percent="75" />
  3. <a-progress type="circle" :percent="70" status="exception" />
  4. <a-progress type="circle" :percent="100" />
  5. </template>

Progress进度条 - 图15

Progress进度条 - 图16

Progress进度条 - 图17

小型进度圈

小一号的圈形进度。

  1. <template>
  2. <a-progress type="circle" :percent="30" :width="80" />
  3. <a-progress type="circle" :percent="70" :width="80" status="exception" />
  4. <a-progress type="circle" :percent="100" :width="80" />
  5. </template>

Progress进度条 - 图18

进度圈动态展示

会动的进度条才是好进度条。

  1. <template>
  2. <div>
  3. <a-progress type="circle" :percent="defaultPercent" />
  4. <a-button-group>
  5. <a-button @click="decline">
  6. <template #icon><minus-outlined /></template>
  7. </a-button>
  8. <a-button @click="increase">
  9. <template #icon><plus-outlined /></template>
  10. </a-button>
  11. </a-button-group>
  12. </div>
  13. </template>
  14. <script lang="ts">
  15. import { MinusOutlined } from '@ant-design/icons-vue';
  16. import { PlusOutlined } from '@ant-design/icons-vue';
  17. import { defineComponent, ref } from 'vue';
  18. export default defineComponent({
  19. components: {
  20. MinusOutlined,
  21. PlusOutlined,
  22. },
  23. setup() {
  24. const defaultPercent = ref<number>(0);
  25. const increase = () => {
  26. const percent = defaultPercent.value + 10;
  27. defaultPercent.value = percent > 100 ? 100 : percent;
  28. };
  29. const decline = () => {
  30. const percent = defaultPercent.value - 10;
  31. defaultPercent.value = percent < 0 ? 0 : percent;
  32. };
  33. return {
  34. defaultPercent,
  35. increase,
  36. decline,
  37. };
  38. },
  39. });
  40. </script>

Progress进度条 - 图19

仪表盘

通过设置 type=dashboard,可以很方便地实现仪表盘样式的进度条。若想要修改缺口的角度,可以设置 gapDegree 为你想要的值。

  1. <template>
  2. <div>
  3. <a-progress type="dashboard" :percent="75" />
  4. </div>
  5. </template>

Progress进度条 - 图20

圆角/方角边缘

strokeLinecap="square|round" 可以调整进度条边缘的形状。

  1. <template>
  2. <div>
  3. <a-progress stroke-linecap="square" :percent="75" />
  4. <a-progress stroke-linecap="square" :percent="75" type="circle" />
  5. <a-progress stroke-linecap="square" :percent="75" type="dashboard" />
  6. </div>
  7. </template>

API

各类型共用的属性。

属性说明类型默认值
type类型,可选 line circle dashboardstringline
format内容的模板函数function(percent, successPercent) | #format=”percent, successPercent”percent => percent + ‘%’
percent百分比number0
showInfo是否显示进度数值或状态图标booleantrue
status状态,可选:success exception normal active(仅限 line)string-
strokeLinecapEnum{ ‘round’, ‘square’ }round
strokeColor进度条的色彩string-
successPercent已完成的分段百分比number0

type="line"

属性说明类型默认值版本
strokeWidth进度条线的宽度,单位 pxnumber10
strokeColor进度条的色彩,传入 object 时为渐变string | { from: string; to: string; direction: string }-

type="circle"

属性说明类型默认值版本
width圆形进度条画布宽度,单位 pxnumber132
strokeWidth圆形进度条线的宽度,单位是进度条画布宽度的百分比number6
strokeColor圆形进度条线的色彩,传入 object 时为渐变string | object-

type="dashboard"

属性说明类型默认值
width仪表盘进度条画布宽度,单位 pxnumber132
strokeWidth仪表盘进度条线的宽度,单位是进度条画布宽度的百分比number6
gapDegree仪表盘进度条缺口角度,可取值 0 ~ 360number0
gapPosition仪表盘进度条缺口位置Enum{ ‘top’, ‘bottom’, ‘left’, ‘right’ }top