UNPKG

zx-progress

Version:

基于 uni-app 官方规范优化的进度条组件

149 lines (119 loc) 4.15 kB
# zx-progress 进度条组件 基于 uni-app 官方 progress 组件规范优化的进度条组件,支持动画效果和自定义样式。 ## 特性 - ✅ 完全兼容 uni-app 官方 progress 组件属性 - ✅ 支持动画效果(active 模式) - ✅ 支持两种动画模式:backwards(从头播放)和 forwards(从上次结束点继续) - ✅ 支持 rpx 和 px 单位 - ✅ 支持渐变色 - ✅ 提供动画完成回调 - ✅ 向后兼容旧版本属性 - ✅ 暴露控制方法 ## 属性说明 | 属性名 | 类型 | 默认值 | 说明 | |--------|------|--------|------| | percent | Number/String | 0 | 百分比 0-100 | | showInfo | Boolean | false | 右侧是否显示百分比 | | borderRadius | Number/String | 0 | 圆角大小,支持 rpx 和 px | | fontSize | Number/String | 16 | 右侧百分比字体大小,支持 rpx 和 px | | color | String | '#333' | 右侧百分比颜色 | | percentWidth | Number/String | 96 | 右侧百分比宽度 | | strokeWidth | Number/String | 6 | 进度条线条宽度,支持 rpx 和 px | | activeColor | String | '#09BB07' | 已选进度条颜色,支持渐变 | | backgroundColor | String | '#EBEBEB' | 未选择的进度条颜色 | | active | Boolean | false | 进度条从左往右的动画 | | activeMode | String | 'backwards' | 动画模式:'backwards'(从头播) / 'forwards'(从上次结束点接着播) | | duration | Number | 30 | 进度增加1%所需毫秒数 | ## 事件 | 事件名 | 说明 | 参数 | |--------|------|------| | @activeend | 动画完成事件 | { percent: Number } | ## 暴露方法 | 方法名 | 说明 | 参数 | |--------|------|------| | startAnimation | 手动触发动画 | - | | reset | 重置进度条 | - | ## 基础用法 ```vue <template> <view> <!-- 基础进度条 --> <zx-progress :percent="30" /> <!-- 显示百分比 --> <zx-progress :percent="50" :showInfo="true" /> <!-- 自定义样式 --> <zx-progress :percent="70" :showInfo="true" strokeWidth="10" borderRadius="5rpx" activeColor="linear-gradient(to right, #4facfe, #00f2fe)" backgroundColor="#f0f0f0" /> <!-- 动画效果 --> <zx-progress :percent="80" :active="true" :duration="50" @activeend="onAnimationEnd" /> </view> </template> <script setup> const onAnimationEnd = (e) => { console.log('动画完成,当前进度:', e.percent); }; </script> ``` ## 高级用法 ```vue <template> <view> <!-- 控制动画 --> <zx-progress ref="progressRef" :percent="progressValue" :active="true" activeMode="forwards" /> <button @click="updateProgress">更新进度</button> <button @click="resetProgress">重置进度</button> </view> </template> <script setup> import { ref } from 'vue'; const progressRef = ref(); const progressValue = ref(0); const updateProgress = () => { progressValue.value = Math.random() * 100; }; const resetProgress = () => { progressRef.value?.reset(); progressValue.value = 0; }; </script> ``` ## 渐变色用法 ```vue <template> <zx-progress :percent="60" :showInfo="true" strokeWidth="12" borderRadius="6rpx" activeColor="linear-gradient(90deg, #ff6b6b 0%, #feca57 50%, #48dbfb 100%)" /> </template> ``` ## 兼容性说明 本组件完全兼容 uni-app 官方 progress 组件的属性,同时保持向后兼容: - `showInfo` 属性保持支持(官方为 `show-info`) - 新增了官方规范的 `borderRadius`、`fontSize`、`strokeWidth` 属性 - 新增了 `active`、`activeMode` 动画相关属性 - 保持原有的 `percentWidth` 自定义属性 ## 注意事项 1. 单位支持:`Number` 类型默认为 rpx,`String` 类型需要带单位(如 '20px') 2. 动画模式: - `backwards`:每次都从 0% 开始播放动画 - `forwards`:从当前位置继续播放到目标位置 3. 渐变色:支持 CSS 渐变语法,如 `linear-gradient()` 等