优雅的用户体验:微信小程序中的多步骤表单引导
前言
在微信小程序中,实现一个多步骤表单引导界面既可以提供清晰的任务指引,又可以增加用户体验的互动性。本文将探讨如何使用微信小程序的特性,构建一个流程引导界面,帮助用户一步步完成复杂任务。我们将从设计布局和样式开始,逐步引导用户完成表单,最终实现一个美观的用户界面。
源码如下
wxml文件
<view class="mainBox"><!-- 步骤条 --><view class="stepBox"><text class="{{currentStep>=1?'active':''}}">1</text><text class="{{currentStep>=2?'active':''}}">2</text><text class="{{currentStep>=3?'active':''}}">3</text><text class="{{currentStep>=4?'active':''}}">4</text><text class="{{currentStep>=5?'active':''}}">完成</text></view><!-- 内容根据当前步骤进行显示,这里可以放置相应的表单内容等 --><view class="stepConBox"><view wx:if="{{currentStep == 1}}">内容111</view><view wx:if="{{currentStep == 2}}">内容222</view><view wx:if="{{currentStep == 3}}">内容333</view><view wx:if="{{currentStep == 4}}">内容444</view><view wx:if="{{currentStep == 5}}">完成</view></view><!-- 操作按钮 --><view class="btnsBox"><button wx:if="{{currentStep > 1 && currentStep < 5}}" bindtap="prevStepOn">上一步</button><button wx:if="{{currentStep < 4}}" bindtap="nextStepOn">下一步</button><button wx:if="{{currentStep == 4 || currentStep == 5}}" bindtap="{{currentStep == 4 ? 'submitFormOn' : 'completeOn'}}">{{currentStep == 4 ? '提交' : '完成'}}</button></view>
</view>
js文件
Page({data: {currentStep: 1, // 初始化数据,currentStep 代表当前的步骤,初始值为 1},// 上一步按钮点击事件处理函数prevStepOn() {// 检查当前步骤是否大于 1,以确保不会回到步骤 0if (this.data.currentStep > 1) {// 更新数据,将当前步骤减 1this.setData({currentStep: this.data.currentStep - 1});}},// 下一步按钮点击事件处理函数nextStepOn() {// 检查当前步骤是否小于 4,以确保不会超过最大步骤数if (this.data.currentStep < 4) {// 更新数据,将当前步骤加 1this.setData({currentStep: this.data.currentStep + 1});}},// 提交按钮点击事件处理函数submitFormOn() {// 在这里执行提交操作,可以调用相应的接口或处理表单数据// 显示提交成功的提示wx.showToast({title: '提交成功',icon: 'none',duration: 2000});// 设置当前步骤为 5,表示已完成this.setData({currentStep: 5});},// 完成按钮点击事件处理函数completeOn() {this.setData({currentStep: 1});},
});
wxss文件
.mainBox {padding: 20rpx;
}/* 定义步骤指示器的样式 */
.stepBox {font-size: 28rpx;font-weight: bold;display: flex;justify-content: space-around;
}/* 定义步骤指示器中的文本样式 */
.stepBox text {background: #CEDDF5;width: 116rpx;height: 60rpx;text-align: center;line-height: 60rpx;color: #fff;border-radius: 8rpx;
}/* 定义步骤指示器中处于活动状态的文本样式 */
.stepBox text.active {background: #477BF7;
}/* 设置步骤内容容器的内边距 */
.stepConBox {padding: 20rpx;
}/* 定义按钮容器的样式 */
.btnsBox {display: flex;justify-content: space-between;margin-top: 20px;
}/* 定义按钮样式 */
.btnsBox button {width: 50%;font-size: 30rpx;font-weight: bold;background: linear-gradient(151deg, #2F7EFC 0%, #7BADFC 100%);color: #fff;border: none;border-radius: 50rpx;
}/* 定义除第一个按钮外的按钮样式,设置左外边距 */
.btnsBox button:nth-child(n+2) {margin-left: 20rpx;
}
实现思路
以上代码就实现了基于小程序框架的多步骤表单引导界面,其中包含了步骤条、不同步骤下的内容展示和操作按钮。首先,让我们从代码的结构开始解析:
HTML结构:
mainBox 是整个页面的主容器,包含了步骤条、内容展示区和操作按钮区;
stepBox 是步骤条容器,用于显示当前步骤的进度,通过 class 的条件渲染来表示当前步骤是否激活;
stepConBox 是内容展示区容器,通过 wx:if 条件渲染来显示与当前步骤相关的内容;
btnsBox 是操作按钮区容器,根据当前步骤的不同,展示上一步、下一步、提交和完成按钮。
JavaScript逻辑:
Page 函数用于定义页面的初始数据,其中 currentStep 初始化为 1,表示当前所在的步骤;
prevStepOn 函数处理上一步按钮的点击事件,确保不会回到步骤 0,通过修改 currentStep 更新界面;
nextStepOn 函数处理下一步按钮的点击事件,确保不会超过最大步骤数,同样通过修改 currentStep 更新界面;
submitFormOn 函数处理提交按钮的点击事件,执行提交操作,例如调用接口或处理表单数据,同时显示提交成功的提示,将 currentStep 设置为 5,表示已完成;
completeOn 函数处理完成按钮的点击事件,将 currentStep 重置为 1,重新开始流程。
-
初始化
在页面加载时,初始化
currentStep为1,显示第一个步骤的内容和相应的步骤条。 -
上一步和下一步
当用户点击上一步按钮时,检查当前步骤是否大于
1,如果是,就减小currentStep,并根据新的currentStep来渲染相应的内容和步骤条。
当用户点击下一步按钮时,检查当前步骤是否小于4,如果是,就增加currentStep,并根据新的currentStep来渲染相应的内容和步骤条。 -
提交表单
当用户点击提交按钮时,执行提交操作,可以调用后端接口或处理表单数据,然后显示提交成功的提示信息。
将currentStep设置为5,表示已完成所有步骤。 -
完成流程
用户完成所有步骤后,可以点击完成按钮,将
currentStep重置为1,重新开始整个流程。
实现效果

相关推荐
⭐ 让你的物流信息一目了然:微信小程序实现进度展示
相关文章:
优雅的用户体验:微信小程序中的多步骤表单引导
前言 在微信小程序中,实现一个多步骤表单引导界面既可以提供清晰的任务指引,又可以增加用户体验的互动性。本文将探讨如何使用微信小程序的特性,构建一个流程引导界面,帮助用户一步步完成复杂任务。我们将从设计布局和样式开始&am…...
Kotlin中的委托、属性委托和延迟加载
委托模式是一种常用的设计模式,用于将某个对象的责任委托给另一个对象来处理。在Kotlin中,委托可以通过关键字by来实现,主要分为类委托和属性委托两种形式。此外,Kotlin还提供了延迟加载的功能,可以在需要时才进行初始…...
轻松合并Excel工作表:Java批量操作优化技巧
摘要:本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 在Excel中设计表单时,我们经常需要对收集的信息进行统计分析。例如&a…...
计算机网络_网络层概述
4.1 网络层概述 4.1.1 一.分组转发和路由选择 网络层的主要任务就是将分组从源主机经过多个网络和多段链路传输到目的主机,可以将该任务划分为分组转发和路由选择两种重要的功能。 注释:A发送到B,从1端口进入. 如何得知是从2还是从3中转发出去呢?--------->这…...
自然语言处理---Transformer机制详解之GPT2模型介绍
1 GPT2的架构 从模型架构上看, GPT2并没有特别新颖的架构, 它和只带有解码器模块的Transformer很像. 所谓语言模型, 作用就是根据已有句子的一部分, 来预测下一个单词会是什么. 现实应用中大家最熟悉的一个语言模型应用, 就是智能手机上的输入法, 它可以根据当前输入的内容智…...
ChatGPT 即将诞生一周年,OpenAI 将有大动作
图片来源:由无界AI生成 下个月就是 ChatGPT 一周年纪念日。OpenAI 正在谋划新的大动作。可以肯定地说,自诞生以来,ChatGPT 就为 OpenAI 提供了不可阻挡的增长动力。 01 营收超预期,OpenAI 缓了一口气 据 The Information 报道&…...
jenkins 原理篇——pipeline流水线 声明式语法详解
大家好,我是蓝胖子,相信大家平时项目中或多或少都有用到jenkins,它的piepeline模式能够对项目的发布流程进行编排,优化部署效率,减少错误的发生,如何去写一个pipeline脚本呢,今天我们就来简单看…...
在ESP32-Arduino开发中添加其它Arduino库
目录 前言 原理说明 操作步骤 下载Bounce 安装Bounce 将下载的文件夹(压缩包需要解压)移动到components/arduino/libraries路径下,并重命名为Bounce2 查看添加库里所有的源文件位置 在arduino的CMakeList.txt里添加库源文件 使用Bounce 前言 乐鑫官方的es…...
CAN总线测试——CAN一致性之物理层
CAN一致性物理层测试项 1.最小通讯电压测试2.最大通讯电压测试3.显性位/隐性位输出电压测试4.信号跳变沿测试5. 地偏移6. 终端电阻 1.最小通讯电压测试 2.最大通讯电压测试 3.显性位/隐性位输出电压测试 4.信号跳变沿测试 5. 地偏移 6. 终端电阻...
macrodata数据集在Python统计建模和计量经济学中的应用
目录 一、数据介绍二、应用三、statsmodels 统计模块四、使用 statsmodels 统计模块分析 macrodata.csv 数据集参考 一、数据介绍 macrodata.csv是一个示例数据集,通常用于统计分析和计量经济学中的教育和训练目的。这个数据集通常包括以下列: year&am…...
【C++进阶(九)】C++多态深度剖析
💓博主CSDN主页:杭电码农-NEO💓 ⏩专栏分类:C从入门到精通⏪ 🚚代码仓库:NEO的学习日记🚚 🌹关注我🫵带你学习C 🔝🔝 多态 1. 前言2. 多态的概念以及定义3. 多态的实…...
第二节——Vue 基本介绍
一、MV*的理解 1、概念 在计算机编程领域,MV*(也称为MVC、MVP、MVVM等)是一种用于组织和设计应用程序结构的模式。这些模式旨在实现应用程序的解耦、可维护性和可扩展性。MV代表着Model-View-(表示控制器或视图模型等其他组件&a…...
基于ResNet34的花朵分类
一.数据集准备 新建一个项目文件夹ResNet,并在里面建立data_set文件夹用来保存数据集,在data_set文件夹下创建新文件夹"flower_data",点击链接下载花分类数据集https://storage.googleapis.com/download.tensorflow.org/example_i…...
[计算机提升] 数据及相关概念
1.9 数据及相关概念 1.9.1 数据、信息 在Windows系统中,数据是指事实或信息的集合,可以是数字、文本、图像、声音等形式的内容。数据是计算机系统中处理和操作的基本元素,是信息的表现形式和载体。 与信息相比,数据的范围更广泛…...
第18章 SpringCloud生态(二)
18.11 说说你了解的负载均衡算法 难度:★★ 重点:★★★★ 白话解析 常用的负载均衡算法有: 1、轮询(Round Robin):说白了就是让服务器排好队,一个个轮着来调用;Ribbon默认采用该算法。 优点:实现起来简单; 缺点:服务器性能不一样的情况下,导致能力强的会经常空闲…...
【Android】BRVAH多布局实现
前言 基于3.0.4版本的BRVAH框架实现的 实现方法 1.创建多个不同类型的布局(步骤忽略) 2.创建数据实体类 数据类要实现【MultiItemEntity】接口 class MyMultiItemEntity(//获取布局类型override var itemType: Int,var tractorRes: Int? null,va…...
AWS SAP-C02教程9-节省成本
SAP-C01变成SAP-C02的时候,最大的变化就是没有把成本单独列出一个模块,但是成本依然包含在各个其它模块之中,所以成本还是很重要的。本章将列举一些成本优化方案以及一些成本辅助功能。 目录 1 Cost Allocation Tags2 Trusted Advisor2.1 AWS Support Plans2.2 基本特性2.3…...
[CSP-S 2023] 种树 —— 二分+前缀和
This way 题意: 一开始以为是水题,敲了一个二分贪心检查的代码,20分。发现从根往某个节点x走的时候,一路走来的子树上的节点到已栽树的节点的距离会变短,那么并不能按照初始情况贪心。 于是就想着检查时候用线段树…...
【LeetCode周赛】LeetCode第368场周赛
目录 元素和最小的山形三元组 I元素和最小的山形三元组 II合法分组的最少组数 元素和最小的山形三元组 I 给你一个下标从 0 开始的整数数组 nums 。 如果下标三元组 (i, j, k) 满足下述全部条件,则认为它是一个山形三元组 : i < j < k nums[i] &l…...
【智慧工地源码】基于AI视觉技术赋能智慧工地
伴随着技术的不断发展,信息化手段、移动技术、智能穿戴及工具在工程施工阶段的应用不断提升,智慧工地概念应运而生,庞大的建设规模催生着智慧工地的探索和研发。 建筑施工具有周期长、环境复杂、工序繁杂、人员流动性大等特点,所以…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
