Skip to content

ArcProgress 环形进度

基础用法

  • 用于展示环形(圆弧)进度,基于 canvas 绘制,支持自定义起止角度、轨道与进度条粗细颜色。
  • 通过 v-model 绑定进度值,值自动夹取到 [min, max] 区间,变化时以缓动动画平滑过渡到目标值。
  • 默认在圆弧中心显示百分比文本,可通过 value 插槽完全自定义中心内容。
  • 颜色、尺寸支持 $ 前缀主题简写(如 $primary$20),主题或风格变化时自动重绘。
vue
<template>
	<sn-arc-progress v-model="value"></sn-arc-progress>
</template>

更多演示请下载 demo 查看

仪表盘进度

通过 start-angleend-angle 定义圆弧区间(角度制,0° 为 3 点钟方向,顺时针为正),配合 minmax 可实现温度计、仪表盘等非 0-100 场景。

vue
<template>
	<sn-arc-progress v-model="temperature" :min="16" :max="30" :start-angle="-180" :end-angle="0" stroke-color="$warning">
		<template v-slot:value="scope">
			<sn-text :text="`${scope.value} °C`" bold></sn-text>
		</template>
	</sn-arc-progress>
</template>

自定义中心内容

使用 value 插槽可替换中心默认的百分比文本,插槽作用域提供当前值 value 与百分比 percent

vue
<template>
	<sn-arc-progress v-model="percent" stroke-color="$success">
		<template v-slot:value="scope">
			<sn-text :text="`${scope.percent}%`" color="$success" bold></sn-text>
		</template>
	</sn-arc-progress>
</template>

属性

参数说明类型默认值可选值
v-model绑定值(进度值,自动夹取到 [min, max] 区间)Number0-
size组件尺寸(宽高一致),支持 $ 前缀动态尺寸String | Number$200-
start-angle轨道起始角度(度,0° 为 3 点钟方向,顺时针为正)Number-225-
end-angle轨道结束角度,与起始角度构成圆弧区间,区间 ≥ 360° 时绘制完整圆环Number45-
line-cap圆弧线端点样式,完整圆环时强制为 buttStringroundbutt | round | square
stroke-width进度条粗细,支持 $ 前缀动态尺寸String | Number$20-
stroke-color进度条颜色,支持 $ 简写String$primary-
trail-width轨道粗细,支持 $ 前缀动态尺寸String | Number$20-
trail-color轨道颜色,支持 $ 简写String$line-
min数值下限Number0-
max数值上限Number100-
show-value-text是否在中心显示百分比文本Booleantruetrue | false
ani-time进度变化动画时长(ms),支持 $ 前缀动态时长,传 0 关闭动画;为空时使用全局长动画时长String | Number''-
custom-style自定义根节点样式UTSJSONObject | String''-
custom-class根节点外部样式类String''-

事件

名称类型说明
change(value: Number) => Void绑定值变化(夹取后)时触发
finish(value: Number) => Void进度动画结束(或无动画直接到位)时触发,参数为最终目标值

插槽

名称说明
value自定义圆弧中心内容,替换默认百分比文本,作用域为 { value: Number, percent: Number }

使用 MIT 协议