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


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 相关文章推荐
[原创]后缀就扩展名为js的文件是什么文件
Dec 06 Javascript
子窗口、父窗口和Silverlight之间的相互调用
Aug 16 Javascript
使用jQuery避免鼠标双击的解决方案
Aug 21 Javascript
jquery修改属性值实例代码(设置属性值)
Jan 06 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
Nov 24 Javascript
JavaScript入门教程之引用类型
May 04 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
Mar 29 Javascript
Vue框架里使用Swiper的方法示例
Sep 20 Javascript
JavaScript基础之this和箭头函数详析
Sep 05 Javascript
JS猜数字游戏实例讲解
Jun 30 Javascript
解决Vue中的生命周期beforeDestory不触发的问题
Jul 21 Javascript
Vue中Object.assign清空数据报错的解决方案
Mar 03 Vue.js
使用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
php5中类的学习
2008/03/28 PHP
php获取后台Job管理的实现代码
2011/06/10 PHP
PHP使用PDO操作数据库的乱码问题解决方法
2016/04/08 PHP
php的PDO事务处理机制实例分析
2017/02/16 PHP
PHP 网站修改默认访问文件的nginx配置
2017/05/27 PHP
写出更好的JavaScript之undefined篇(上)
2009/11/22 Javascript
js parsefloat parseint 转换函数
2010/01/21 Javascript
jQuery 选择器理解
2010/03/16 Javascript
麻雀虽小五脏俱全 Dojo自定义控件应用
2010/09/04 Javascript
Jquery和BigFileUpload实现大文件上传及进度条显示
2016/06/27 Javascript
javascript按顺序加载运行js方法
2017/12/01 Javascript
js实现图片上传并预览功能
2018/08/06 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
2019/02/20 jQuery
使用JS监听键盘按下事件(keydown event)
2019/11/07 Javascript
JS实现手写 forEach算法示例
2020/04/29 Javascript
Cython 三分钟入门教程
2009/09/17 Python
可用于监控 mysql Master Slave 状态的python代码
2013/02/10 Python
Python的Flask框架中@app.route的用法教程
2015/03/31 Python
python实现的用于搜索文件并进行内容替换的类实例
2015/06/28 Python
在Django中使用Sitemap的方法讲解
2015/07/22 Python
python使用PyCharm进行远程开发和调试
2017/11/02 Python
Python 字符串与二进制串的相互转换示例
2018/07/23 Python
Flask框架单例模式实现方法详解
2019/07/31 Python
python十进制转二进制的详解
2020/02/07 Python
基于Python实现视频的人脸融合功能
2020/06/12 Python
html5使用canvas画空心圆与实心圆
2014/12/15 HTML / CSS
汽车维修与检测专业应届生求职信
2013/11/12 职场文书
心理健康教育心得体会
2013/12/29 职场文书
《鹬蚌相争》教学反思
2014/04/22 职场文书
2015年财务试用期工作总结
2014/12/24 职场文书
成绩单家长意见
2015/06/03 职场文书
同学联谊会邀请函
2019/06/24 职场文书
Django使用channels + websocket打造在线聊天室
2021/05/20 Python
Pygame Time时间控制的具体使用详解
2021/11/17 Python
MySQL创建管理KEY分区
2022/04/13 MySQL
Python 绘制多因子柱状图
2022/05/11 Python