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


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的index方法实现tab效果
Feb 16 Javascript
网页加载时页面显示进度条加载完成之后显示网页内容
Dec 23 Javascript
jQuery链使用指南
Jan 20 Javascript
javascript原型链继承用法实例分析
Jan 28 Javascript
前端js文件合并的三种方式推荐
May 19 Javascript
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
Apr 21 jQuery
vue数组对象排序的实现代码
Jun 20 Javascript
JavaScript创建对象的常用方式总结
Aug 10 Javascript
vue axios数据请求及vue中使用axios的方法
Sep 10 Javascript
jQuery时间戳和日期相互转换操作示例
Dec 07 jQuery
3分钟了解vue数据劫持的原理实现
May 01 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
Dec 11 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
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
基于php缓存的详解
2013/05/15 PHP
php字符编码转换之gb2312转为utf8
2013/10/28 PHP
php+highchats生成动态统计图
2014/05/21 PHP
destoon实现不同会员组公司名称显示不同的颜色的方法
2014/08/22 PHP
分享最受欢迎的5款PHP框架
2014/11/27 PHP
apache中为php 设置虚拟目录
2014/12/17 PHP
使用新浪微博API的OAuth认证发布微博实例
2015/03/27 PHP
值得分享的php+ajax实时聊天室
2016/07/20 PHP
Thinkphp5.0框架视图view的循环标签用法示例
2019/10/12 PHP
setInterval()和setTimeout()的用法和区别示例介绍
2013/11/17 Javascript
js中将String转换为number以便比较
2014/07/08 Javascript
JavaScript设计模式之观察者模式(发布者-订阅者模式)
2014/09/24 Javascript
JavaScript如何获取数组最大值和最小值
2015/11/18 Javascript
bootstrap3 兼容IE8浏览器!
2016/05/02 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
Angular使用$http.jsonp发送跨站请求的方法
2017/03/16 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
2017/07/19 Javascript
swiper.js插件实现pc端文本上下滑动功能示例
2018/12/03 Javascript
浅析Python中yield关键词的作用与用法
2016/11/29 Python
基于Python函数的作用域规则和闭包(详解)
2017/11/29 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
python scp 批量同步文件的实现方法
2019/01/03 Python
python基于FTP实现文件传输相关功能代码实例
2019/09/28 Python
flask框架url与重定向操作实例详解
2020/01/25 Python
Python多线程threading创建及使用方法解析
2020/06/17 Python
python使用smtplib模块发送邮件
2020/12/17 Python
python日志通过不同的等级打印不同的颜色(示例代码)
2021/01/13 Python
css3 中实现炫酷的loading效果
2019/04/26 HTML / CSS
CSS3实现同时执行倾斜和旋转的动画效果
2016/10/27 HTML / CSS
医学生求职自荐信
2013/10/25 职场文书
岗位工作说明书
2014/07/29 职场文书
党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
幼儿园班级工作总结2015
2015/05/25 职场文书
手术室消毒隔离制度
2015/08/05 职场文书
15个值得收藏的JavaScript函数
2021/09/15 Javascript