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


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基础的动画教程,直观易懂
Jan 10 Javascript
JavaScript之编码规范 推荐
May 23 Javascript
在JavaScript中判断整型的N种方法示例介绍
Jun 18 Javascript
如何实现JavaScript动态加载CSS和JS文件
Dec 28 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
May 20 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
May 25 Javascript
javascript汉字拼音互转的简单实例
Oct 09 Javascript
js中json处理总结之JSON.parse
Oct 14 Javascript
微信小程序动态的加载数据实例代码
Apr 14 Javascript
Vue自定义图片懒加载指令v-lazyload详解
Dec 31 Javascript
使用javascript做在线算法编程
May 25 Javascript
详解Vuex下Store的模块化拆分实践
Jul 31 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
javascript 一段左右两边随屏滚动的代码
2009/06/18 Javascript
Javascript Math ceil()、floor()、round()三个函数的区别
2010/03/09 Javascript
用dtree实现树形菜单 dtree使用说明
2011/10/17 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
jQuery基础语法实例入门
2014/12/23 Javascript
javascript制作2048游戏
2015/03/30 Javascript
js实现分割上传大文件
2016/03/09 Javascript
JavaScript——DOM操作——Window.document对象详解
2016/07/14 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
Angular-UI Bootstrap组件实现警报功能
2018/07/16 Javascript
layui问题之模拟select点击事件的实例讲解
2018/08/15 Javascript
vscode 开发Vue项目的方法步骤
2018/11/25 Javascript
Vue.js中的extend绑定节点并显示的方法
2019/06/20 Javascript
js验证账户名是否重复
2020/05/26 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
2020/08/04 Javascript
js+css3实现简单时钟特效
2020/09/13 Javascript
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
uniapp微信小程序:key失效的解决方法
2021/01/20 Javascript
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
python append、extend与insert的区别
2016/10/13 Python
Pycharm 设置自定义背景颜色的图文教程
2018/05/23 Python
Python中的四种交换数值的方法解析
2019/11/18 Python
python中return的返回和执行实例
2019/12/24 Python
如何利用Python识别图片中的文字
2020/05/31 Python
python中操作文件的模块的方法总结
2021/02/04 Python
Foot Locker德国官方网站:美国运动服和鞋类零售商
2018/11/01 全球购物
澳大利亚墨水站Ink Station:墨水和碳粉打印机墨盒
2019/03/24 全球购物
Sisley法国希思黎美国官方网站:享誉全球的奢华植物美容品牌
2020/06/27 全球购物
爱祖国演讲稿
2014/05/04 职场文书
心得体会的写法
2014/09/05 职场文书
会计人员演讲稿
2014/09/11 职场文书
项目转让协议书
2014/10/27 职场文书
幼儿园小班家长评语
2014/12/30 职场文书
退货证明模板
2015/06/23 职场文书
MySQL数据库实验之 触发器和存储过程
2022/06/21 MySQL