优雅的用户体验:微信小程序中的多步骤表单引导
前言
在微信小程序中,实现一个多步骤表单引导界面既可以提供清晰的任务指引,又可以增加用户体验的互动性。本文将探讨如何使用微信小程序的特性,构建一个流程引导界面,帮助用户一步步完成复杂任务。我们将从设计布局和样式开始,逐步引导用户完成表单,最终实现一个美观的用户界面。
源码如下
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视觉技术赋能智慧工地
伴随着技术的不断发展,信息化手段、移动技术、智能穿戴及工具在工程施工阶段的应用不断提升,智慧工地概念应运而生,庞大的建设规模催生着智慧工地的探索和研发。 建筑施工具有周期长、环境复杂、工序繁杂、人员流动性大等特点,所以…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...

云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...