更新记录
1.0.0(2025-08-04)
下载此版本
新增StepProgress 步骤进度组件
平台兼容性
uni-app(4.07)
Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
- |
微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
快应用-华为 |
快应用-联盟 |
√ |
√ |
√ |
√ |
√ |
√ |
- |
- |
- |
- |
- |
uni-app x(4.07)
Chrome |
Safari |
Android |
iOS |
鸿蒙 |
微信小程序 |
- |
- |
- |
- |
- |
- |
其他
StepProgress 步骤进度组件
一个功能强大的步骤进度指示器组件,支持动态宽度计算、自定义样式和交互功能。
功能特性
- ✅ 动态宽度计算 - 自动计算元素间距,无需写死宽度
- ✅ 连接线动画 - 当前步骤之前的连接线为绿色,之后为灰色
- ✅ 自定义样式 - 支持自定义颜色、大小、字体等
- ✅ 点击交互 - 支持点击步骤切换(可选)
- ✅ 响应式设计 - 适配不同屏幕尺寸
- ✅ 动画效果 - 平滑的过渡动画
- ✅ 完成状态 - 已完成的步骤显示对勾图标
基本用法
<template>
<StepProgress
:currentStep="currentStep"
:steps="stepData"
/>
</template>
<script setup>
import StepProgress from '@/components/StepProgress/StepProgress.vue';
const currentStep = ref(0);
const stepData = reactive([
{ title: '经营信息' },
{ title: '商户设置' },
{ title: '账户设置' },
{ title: '联系人设置' }
]);
</script>
高级用法
<template>
<StepProgress
:currentStep="currentStep"
:steps="stepData"
:clickable="true"
:activeColor="#57BC40"
:inactiveColor="#E5E5E5"
:circleSize="60"
:titleSize="26"
@stepClick="handleStepClick"
/>
</template>
Props 参数
参数 |
类型 |
默认值 |
说明 |
currentStep |
Number |
0 |
当前步骤(从0开始) |
steps |
Array |
[] |
步骤数据数组 |
justifyType |
String |
'space-between' |
对齐方式 |
circleSize |
Number |
56 |
圆圈大小(rpx) |
iconSize |
Number |
16 |
图标大小 |
numberSize |
Number |
24 |
数字大小(rpx) |
titleSize |
Number |
24 |
标题大小(rpx) |
lineHeight |
Number |
4 |
连接线高度(rpx) |
activeColor |
String |
'#57BC40' |
激活状态颜色 |
inactiveColor |
String |
'#E5E5E5' |
未激活状态颜色 |
clickable |
Boolean |
false |
是否可点击 |
Events 事件
事件名 |
参数 |
说明 |
stepClick |
index |
点击步骤时触发,返回步骤索引 |
样式说明
状态样式
- 未完成:灰色圆圈 + 灰色连接线 + 灰色标题
- 当前步骤:绿色圆圈 + 数字 + 绿色标题
- 已完成:绿色圆圈 + 对勾图标 + 绿色连接线
响应式设计
动画效果
- 圆圈缩放动画(hover时)
- 颜色过渡动画
- 淡入动画
使用示例
1. 基础步骤指示器
<StepProgress
:currentStep="0"
:steps="[
{ title: '步骤1' },
{ title: '步骤2' },
{ title: '步骤3' }
]"
/>
2. 可点击的步骤指示器
<StepProgress
:currentStep="currentStep"
:steps="stepData"
:clickable="true"
@stepClick="handleStepClick"
/>
3. 自定义样式
<StepProgress
:currentStep="currentStep"
:steps="stepData"
:activeColor="#FF6B6B"
:inactiveColor="#F0F0F0"
:circleSize="70"
:titleSize="28"
:lineHeight="6"
/>
4. 完整页面示例
<template>
<view class="container">
<!-- 步骤指示器 -->
<StepProgress
:currentStep="currentStep"
:steps="stepData"
:clickable="true"
@stepClick="handleStepClick"
/>
<!-- 步骤内容 -->
<view class="step-content">
<view v-if="currentStep === 0">步骤1内容</view>
<view v-else-if="currentStep === 1">步骤2内容</view>
<view v-else-if="currentStep === 2">步骤3内容</view>
</view>
<!-- 操作按钮 -->
<view class="actions">
<u-button @click="prevStep">上一步</u-button>
<u-button @click="nextStep">下一步</u-button>
</view>
</view>
</template>
注意事项
- currentStep 从0开始:第一个步骤的索引是0
- 动态宽度:组件会自动计算每个步骤的宽度,无需手动设置
- 连接线:最后一个步骤不会显示连接线
- 响应式:在小屏幕上会自动调整字体大小
- 动画性能:使用了CSS3动画,性能良好
兼容性
- ✅ 微信小程序
- ✅ H5
- ✅ App
- ✅ 其他uni-app支持的平台