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


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常用方法汇总
Dec 02 Javascript
jQuery实现判断滚动条到底部
Jun 23 Javascript
学习Angularjs分页指令
Jul 01 Javascript
js实现的光标位置工具函数示例
Oct 03 Javascript
jquery Ajax实现Select动态添加数据
Jun 08 jQuery
JS实现闭包中的沙箱模式示例
Sep 07 Javascript
js调用设备摄像头的方法
Jul 19 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
Sep 15 Javascript
angularJs利用$scope处理升降序的方法
Oct 08 Javascript
Vue 中的受控与非受控组件的实现
Dec 17 Javascript
Vue 报错TypeError: this.$set is not a function 的解决方法
Dec 17 Javascript
微信小程序 wxParse插件显示视频问题
Sep 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
星际初学者游戏中永远要做的事
2020/03/04 星际争霸
星际争霸 Starcraft 发展史
2020/03/14 星际争霸
Adodb的十个实例(清晰版)
2006/12/31 PHP
set_exception_handler函数在ThinkPHP中的用法
2014/10/31 PHP
浅谈COOKIE和SESSION区别
2015/07/19 PHP
ThinkPHP表单令牌错误的相关解决方法分析
2016/05/20 PHP
通过JS 获取Mouse Position(鼠标坐标)的代码
2009/09/21 Javascript
JS写的贪吃蛇游戏(个人练习)
2013/07/08 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
2014/06/23 Javascript
JavaScript自定义等待wait函数实例分析
2015/03/23 Javascript
PhantomJS快速入门教程(服务器端的 JavaScript API 的 WebKit)
2015/08/06 Javascript
js实现简单的联动菜单效果
2015/08/19 Javascript
深入理解JavaScript中的call、apply、bind方法的区别
2016/05/30 Javascript
jQuery中Find选择器用法示例
2016/09/21 Javascript
Vue.js实战之组件之间的数据传递
2017/04/01 Javascript
vue+swiper实现侧滑菜单效果
2017/12/28 Javascript
关于redux-saga中take使用方法详解
2018/02/27 Javascript
浅谈Vue.use到底是什么鬼
2020/01/21 Javascript
[01:15:16]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第一场 1月26日
2021/03/11 DOTA
python的常见命令注入威胁
2013/02/18 Python
详解Python编程中time模块的使用
2015/11/20 Python
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
python matplotlib坐标轴设置的方法
2017/12/05 Python
Python实现备份MySQL数据库的方法示例
2018/01/11 Python
40个你可能不知道的Python技巧附代码
2020/01/29 Python
python中pop()函数的语法与实例
2020/12/01 Python
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
2018/09/10 HTML / CSS
27个经典Linux面试题及答案,你知道几个?
2014/03/11 面试题
公司培训欢迎词
2014/01/10 职场文书
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
小学生评语大全
2014/04/18 职场文书
竞争上岗演讲稿范文
2014/05/12 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
党员个人年度总结
2015/02/14 职场文书
信贷客户经理岗位职责
2015/04/09 职场文书
解决MySQL存储时间出现不一致的问题
2021/04/28 MySQL