简体中文
Progress 进度条
用于展示操作进度,告知用户当前状态和预期
直线进度条
Progress 组件设置 percentage
属性即可,可以表示进度条对应的百分比。该属性 必填 ,并且必须在 0-100
的范围内。你可以通过设置 format
来自定义文字显示的格式。
50%
Full
<>
<template>
<div>
<kl-progress :percentage="50" />
<kl-progress :percentage="100" :format="format" />
<kl-progress :percentage="100" status="success" />
<kl-progress :percentage="100" status="warning" />
<kl-progress :percentage="50" status="exception" />
</div>
</template>
<script setup lang="ts">
const format = (percentage: Number) => (percentage === 100 ? 'Full' : `${percentage}%`)
</script>
<style scoped></style>
进度条内显示百分比标识
百分比不占用额外控件,适用于文件上传等场景。
Progress 组件可通过 storke-width
属性更改进度条的高度,并可通过 text-inside
属性来改变进度条内部的文字。
<>
<template>
<div>
<kl-progress :percentage="100" :storke-width="26" :text-inside="true" />
<kl-progress :percentage="100" :storke-width="24" :text-inside="true" status="success" />
<kl-progress :percentage="100" :storke-width="22" :text-inside="true" status="warning" />
<kl-progress :percentage="100" :storke-width="20" :text-inside="true" status="exception" />
</div>
</template>
<script setup lang="ts"></script>
<style scoped></style>
自定义进度条颜色
可以通过 color
属性来设置进度条的颜色。该属性可以接收十六进制颜色值。
100%
95%
90%
85%
80%
75%
70%
<>
<template>
<div>
<kl-progress :percentage="100" color="red" />
<kl-progress :percentage="95" color="orange" />
<kl-progress :percentage="90" color="yellow" />
<kl-progress :percentage="85" color="green" />
<kl-progress :percentage="80" color="aqua" />
<kl-progress :percentage="75" color="blue" />
<kl-progress :percentage="70" color="purple" />
</div>
</template>
<script setup lang="ts"></script>
<style scoped></style>
环形进度条
Progress 组件可通过 type
属性来指定使用环形进度条,在环形进度条中,还可以通过 width
属性来设置其大小。
15%
100%
<>
<template>
<div class="kl-wrapper">
<kl-progress :percentage="15" width="125" type="circle" />
<kl-progress :percentage="100" width="125" type="circle" />
<kl-progress :percentage="100" width="125" type="circle" status="success" />
<kl-progress :percentage="100" width="125" type="circle" status="warning" />
<kl-progress :percentage="100" width="125" type="circle" status="exception" />
</div>
</template>
<script setup lang="ts"></script>
<style scoped>
.kl-wrapper {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 20px;
}
</style>
仪表盘形进度条
您可以指定 type
属性到 dashboard
使用控制面板进度栏。
10%
0%
<>
<template>
<div class="kl-wrapper">
<kl-progress :percentage="controlPercentage" :color="color" width="125" type="dashboard" />
<kl-progress :percentage="percentage" width="125" :color="color" type="dashboard" />
</div>
<kl-button plain size="small" @click="decrease">-</kl-button>
<kl-button plain size="small" @click="increase">+</kl-button>
</template>
<script setup lang="ts">
import { ref } from 'vue'
const percentage = ref(0)
const color = ref([
{ color: 'red', percentage: 0 },
{ color: 'orange', percentage: 40 },
{ color: 'blue', percentage: 80 },
{ color: 'green', percentage: 100 }
])
setInterval(() => {
if (percentage.value === 100) {
percentage.value = 0
} else {
percentage.value += 10
}
}, 1000)
const controlPercentage = ref(10)
const increase = () => {
controlPercentage.value += 10
if (controlPercentage.value > 100) {
controlPercentage.value = 100
}
}
const decrease = () => {
controlPercentage.value -= 10
if (controlPercentage.value < 0) {
controlPercentage.value = 0
}
}
</script>
<style scoped>
.kl-wrapper {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 20px;
}
.kl-button {
padding: 0 20px;
}
</style>
自定义内容
通过默认插槽添加自定义内容。
0%Progressing
<>
<template>
<div class="kl-wrapper">
<kl-progress :percentage="percentage" color="lightgreen" :duration="0.3" width="250">
<kl-button text>content</kl-button>
</kl-progress>
<kl-progress
:percentage="percentage"
:storke-width="30"
:show-text="false"
color="lightgreen"
:duration="0.3"
width="250"
>
<span>content</span>
</kl-progress>
<div style="display: flex; align-items: center">
<kl-progress :percentage="percentage" type="circle" width="125">
<kl-button type="success" circle :icon="KlOtherCorrectCircleLine"></kl-button>
</kl-progress>
<kl-progress :percentage="percentage" type="circle" width="125">
<template #default="{ percentage }">
<span class="progress-value">{{ percentage }}</span>
<span class="progress-text">Progressing</span>
</template>
</kl-progress>
</div>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { KlOtherCorrectCircleLine } from '@kl-design/icons'
const percentage = ref(0)
setInterval(() => {
percentage.value = Math.ceil(Math.random() * 100)
}, 1000)
</script>
<style scoped>
.kl-wrapper {
display: flex;
flex-direction: column;
gap: 20px;
box-sizing: border-box;
padding: 20px 0;
}
.progress-value {
display: block;
text-align: center;
}
.progress-text {
display: block;
}
</style>
动画进度条
使用 intermediate
属性来设置不确定的进度,duration
来控制动画持续时间。
50%
Full
<>
<template>
<div>
<kl-progress :percentage="50" indeterminate :duration="1" />
<kl-progress :percentage="100" indeterminate :format="format" :duration="1.5" />
<kl-progress :percentage="100" indeterminate status="success" :duration="2" />
<kl-progress :percentage="100" indeterminate status="warning" :duration="3" />
<kl-progress :percentage="100" indeterminate status="exception" :duration="4" />
</div>
</template>
<script setup lang="ts">
const format = (percentage: Number) => (percentage === 100 ? 'Full' : `${percentage}%`)
</script>
<style scoped></style>
属性
属性 | 说明 | 类型 | 可选 | 默认 |
---|---|---|---|---|
percentage | 必填 ,百分比 | number | 0-100 | 0 |
cw | 环形大小 | number | 125 | |
type | 进度条类型 | string | line | circle | dashboard | line |
text-inside | 文字内侧显示 | boolean | false | |
storke-width | 进度条宽度 | number | 10 | |
status | 当前状态 | string | success | exception | warning | |
indeterminate | 动画进度条 | boolean | false | |
duration | 进度条速度|动画速度 | number | 0.3 | |
color | 进度条颜色 | string | array | '' | |
width | 条形进度条长度 | string | 300px | |
show-text | 是否显示进度条文字内容 | boolean | true | |
storke-line-cap | 进度条的形状 | string | round | square | round |
format | 指定文字内容 | function |