微信小程序实现流程进度的图样式功能


Posted in Javascript onJanuary 16, 2018

最近正在做微信小程序,需要实现一个流程进度的图样式如下面

微信小程序实现流程进度的图样式功能 

需求:

  1. 没完成的灰色小圆点表示
  2. 完成的使用蓝色小圆点设置
  3. 当前状态使用有外圈的小圆点表示

实现起来比较简单,实现思路,使用一个列表实现,列表中的每一个item的样式如下图

微信小程序实现流程进度的图样式功能 

使用win10画板画的不好看

图上的意思就是每个item 前面有一段线条 中间是个圆圈然后后面有一段线条。之所以这样是因为下面的文字需要居中显示在圆圈的下面。如果不需要文字的话可以一个圆圈后面跟一条直线会更简单一点。

按照上面的图片,html布局为下面

<view class='order_process'>
  <view class='process_wrap' wx:for="{{processData}}" wx:key="">
  <view class='process'>
   <view class='process_line' style="background:{{item.start}}"></view>
   <image class='process_icon' src="{{item.icon}}"></image>
   <view class='process_line' style="background:{{item.end}}"></view>
  </view>
  <text class='process_name'>{{item.name}}</text>
  </view>
 </view>

OK 列表肯定需要一个数组啦数组如下面

processData: [{
  name: '提交工单',
  start: '#fff',
  end: '#EFF3F6',
  icon: '../../img/process_1.png'
 },
 {
  name: '已接单',
  start: '#EFF3F6',
  end: '#EFF3F6',
  icon: '../../img/process_1.png'
 },
 {
  name: '开始维修',
  start: '#EFF3F6',
  end: '#EFF3F6',
  icon: '../../img/process_1.png'
 },
 {
  name: '维修结束',
  start: '#EFF3F6',
  end: '#EFF3F6',
  icon: '../../img/process_1.png'
 },
 {
  name: '已确认',
  start: '#EFF3F6',
  end: '#fff',
  icon: '../../img/process_1.png'
 }],
 },

按照上面的item图片我们会看到直接显示的话两边会多处一条线来怎么去掉这两条线呢,很简单,让父容器的背景颜色跟先的颜色一样就好啦。

把父布局的背景改为白色,然后控制列表中第一个item中的前面的线段的颜色为白色,最后一个item中的后面的线段为白色。这样看起来两边的线段就去掉了

当数据改变的时候,我们只需要改变数组中对象的属性就好了。不如下面的做参考

//进度条的状态
 setPeocessIcon: function () {
 var index = 0//记录状态为1的最后的位置
 var processArr = this.data.processData
 // console.log("progress", this.data.detailData.progress)
 for (var i = 0; i < this.data.detailData.progress.length; i++) {
  var item = this.data.detailData.progress[i]
  processArr[i].name = item.word
  if (item.state == 1) {
  index = i
  processArr[i].icon = "../../img/process_3.png"
  processArr[i].start = "#45B2FE"
  processArr[i].end = "#45B2FE"
  } else {
  processArr[i].icon = "../../img/process_1.png"
  processArr[i].start = "#EFF3F6"
  processArr[i].end = "#EFF3F6"
  }
 }
 processArr[index].icon = "../../img/process_2.png"
 processArr[index].end = "#EFF3F6"
 processArr[0].start = "#fff"
 processArr[this.data.detailData.progress.length - 1].end = "#fff"
 this.setData({
  processData: processArr
 })
 },

上面代码的数据中,使用state代表完成和没完成。我们把完成的设置为蓝色 把没完成的设置为灰色。

使用 index 来记录是不是当前点(当前点就是state表示完成的最后一个)。

最后css中的代码也很简单

.order_process {
 display: flex;
 flex-wrap: nowrap;
 padding: 10rpx 10rpx 20rpx 10rpx;
 background-color: #fff;
}

.process_wrap {
 display: flex;
 flex-direction: column;
 flex: 1;
 align-items: center;
}

.process {
 display: flex;
 align-items: center;
 width: 100%;
}

.process_icon {
 width: 50rpx;
 height: 50rpx;
}

.process_line {
 background: #eff3f6;
 flex: 1;
 height: 5rpx;
}

.process_name {
 font-size: 24rpx;
}

总结

以上所述是小编给大家介绍的微信小程序实现流程进度的图样式功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jQuery .tmpl(), .template()学习资料小结
Jul 18 Javascript
jQuery学习笔记 获取jQuery对象
Sep 19 Javascript
js中回调函数的学习笔记
Jul 31 Javascript
简单总结JavaScript中的String字符串类型
May 26 Javascript
jQuery mobile的header和footer在点击屏幕的时候消失的解决办法
Jul 01 Javascript
jQuery插件DataTables分页开发心得体会
Aug 22 jQuery
vue 弹框产生的滚动穿透问题的解决
Sep 21 Javascript
微信小程序自定义波浪组件使用方法详解
Sep 21 Javascript
微信小程序学习总结(四)事件与冒泡实例分析
Jun 04 Javascript
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
Aug 05 Javascript
vue element-ul实现展开和收起功能的实例代码
Nov 25 Vue.js
JavaScript实现滚动加载更多
Dec 27 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
Jan 16 #Javascript
vue单页面打包文件大?首次加载慢?nginx带你飞,从7.5M到1.3M蜕变过程(推荐)
Jan 16 #Javascript
详解layui中的树形关于取值传值问题
Jan 16 #Javascript
基于JavaScript实现抽奖系统
Jan 16 #Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
Jan 16 #Javascript
浅谈vue的props,data,computed变化对组件更新的影响
Jan 16 #Javascript
Parcel 打包示例(React HelloWorld)
Jan 16 #Javascript
You might like
PHP调用三种数据库的方法(1)
2006/10/09 PHP
php Static关键字实用方法
2010/06/04 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
详解PHP中的8个魔术常量
2020/07/06 PHP
Open and Print a Word Document
2007/06/15 Javascript
jQuery读取和设定KindEditor值的方法
2013/11/22 Javascript
Javascript加载速度慢的解决方案
2014/03/11 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
2015/10/29 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
2016/10/17 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
基于javascript实现数字英文验证码
2017/01/25 Javascript
JavaScript之浏览器对象_动力节点Java学院整理
2017/07/03 Javascript
Sublime Text新建.vue模板并高亮(图文教程)
2017/10/26 Javascript
基于jQuery Ajax实现下拉框无刷新联动
2017/12/06 jQuery
IE11下处理Promise及Vue的单项数据流问题
2019/07/24 Javascript
Webpack3+React16代码分割的实现
2021/03/03 Javascript
[51:00]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
Python检测网络延迟的代码
2018/05/15 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
2019/08/06 Python
python输出决策树图形的例子
2019/08/09 Python
python爬虫 基于requests模块的get请求实现详解
2019/08/20 Python
Django之使用内置函数和celery发邮件的方法示例
2019/09/16 Python
python中的逆序遍历实例
2019/12/25 Python
用python爬取历史天气数据的方法示例
2019/12/30 Python
浅谈matplotlib 绘制梯度下降求解过程
2020/07/12 Python
Python特殊属性property原理及使用方法解析
2020/10/09 Python
技校毕业生个人学习的自我评价
2014/02/21 职场文书
科长竞争上岗演讲稿
2014/05/12 职场文书
村党支部公开承诺书
2014/05/29 职场文书
高中班主任心得体会
2016/01/07 职场文书
2016年共产党员公开承诺书
2016/03/24 职场文书
2016年读书月活动总结范文
2016/04/06 职场文书
Python 阶乘详解
2021/10/05 Python
python微信智能AI机器人实现多种支付方式
2022/04/12 Python
Android实现图片九宫格
2022/06/28 Java/Android