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


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 相关文章推荐
javascript document.referrer 用法
Apr 30 Javascript
深入理解JavaScript系列(14) 作用域链介绍(Scope Chain)
Apr 12 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
Apr 08 Javascript
鼠标移到导航当前位置的LI变色处于选中状态
Aug 23 Javascript
js 上下左右键控制焦点(示例代码)
Dec 14 Javascript
js格式化时间小结
Nov 03 Javascript
深入探寻seajs的模块化与加载方式
Apr 14 Javascript
JavaScript数据结构与算法之集合(Set)
Jan 29 Javascript
一道关于JavaScript变量作用域的面试题
Mar 08 Javascript
JavaScript 链式结构序列化详解
Sep 30 Javascript
JS多文件上传的实例代码
Jan 11 Javascript
详解vue3中组件的非兼容变更
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
php正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
PHP include_path设置技巧分享
2011/07/03 PHP
php将图片保存为不同尺寸图片的图片类实例
2015/03/30 PHP
php实现微信原生支付(扫码支付)功能
2018/05/30 PHP
基于php解决json_encode中文UNICODE转码问题
2020/11/10 PHP
Prototype使用指南之array.js
2007/01/10 Javascript
js有关元素内容操作小结
2011/12/20 Javascript
JS 实现Table相同行的单元格自动合并示例代码
2013/08/27 Javascript
jqGrid增加时--判断开始日期与结束日期(实例解析)
2013/11/08 Javascript
JQuery EasyUI 数字格式化处理示例
2014/05/05 Javascript
使用node.js 制作网站前台后台
2014/11/13 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
js+html5实现canvas绘制圆形图案的方法
2015/06/05 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
2016/11/10 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
JavaScript中利用构造器函数模拟类的方法
2017/02/16 Javascript
原生javascript上传图片带进度条【实例分享】
2017/04/06 Javascript
ionic 3.0+ 项目搭建运行环境的教程
2017/08/09 Javascript
微信小程序如何获取用户手机号
2018/01/26 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
Python运算符重载用法实例分析
2015/06/01 Python
python编程羊车门问题代码示例
2017/10/25 Python
Python SQLite3简介
2018/02/22 Python
python openpyxl模块的使用详解
2021/02/25 Python
英国No.1文具和办公用品在线:Euroffice
2016/09/21 全球购物
英国厨房与餐具用品为主的设计品牌:Joseph Joseph
2018/04/26 全球购物
大学生自我鉴定书
2014/03/24 职场文书
防邪知识进家庭活动方案
2014/08/26 职场文书
金陵十三钗观后感
2015/06/04 职场文书
2016幼儿园教师年度考核评语
2015/12/01 职场文书
分析mysql中一条SQL查询语句是如何执行的
2021/06/21 MySQL
golang三种设计模式之简单工厂、方法工厂和抽象工厂
2022/04/10 Golang
Android开发 使用文件储存的方式保存QQ密码
2022/04/24 Java/Android
解决Mysql中的innoDB幻读问题
2022/04/29 MySQL