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


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学习基础知识小结
Nov 25 Javascript
javascript跨域刷新实现代码
Jan 01 Javascript
Node.js中HTTP模块与事件模块详解
Nov 14 Javascript
学习javascript面向对象 理解javascript原型和原型链
Jan 04 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
Oct 05 Javascript
浅谈在js传递参数中含加号(+)的处理方式
Oct 11 Javascript
简述jQuery Easyui一些用法
Aug 01 jQuery
详解Vue-Cli 异步加载数据的一些注意点
Aug 12 Javascript
Promise.all中对于reject的处理方法
Aug 01 Javascript
微信小程序中如何使用flyio封装网络请求
Jul 03 Javascript
微信小程序实现天气预报功能(附源码)
Dec 10 Javascript
vue监听滚动事件的方法
Dec 21 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
解析MySql与Java的时间类型
2013/06/22 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
2014/07/05 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
2014/08/18 PHP
在一个浏览器里呈现所有浏览器测试结果的前端测试工具的思路
2010/03/02 Javascript
javascript hasFocus使用实例
2010/06/29 Javascript
multiSteps 基于Jquery的多步骤滑动切换插件
2011/07/22 Javascript
常用Extjs工具:Extjs.util.Format使用方法
2012/03/22 Javascript
幻灯片带网页设计中的20个奇妙应用示例小结
2012/05/27 Javascript
JS实现一键回顶功能示例代码
2013/10/28 Javascript
javascript中定义私有方法说明(private method)
2014/01/27 Javascript
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
Javascript基础教程之JavaScript语法
2015/01/18 Javascript
理解Angular数据双向绑定
2016/01/10 Javascript
基于jQuery实现淡入淡出效果轮播图
2020/07/31 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
vue深入解析之render function code详解
2017/07/18 Javascript
基于wordpress的ajax写法详解
2018/01/02 Javascript
nginx+vue.js实现前后端分离的示例代码
2018/02/12 Javascript
微信小程序swiper左右扩展各显示一半代码实例
2019/12/05 Javascript
如何在postman测试用例中实现断言过程解析
2020/07/09 Javascript
python 实现归并排序算法
2012/06/05 Python
使用Python3制作TCP端口扫描器
2017/04/17 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
2017/12/20 Python
Python数据可视化:饼状图的实例讲解
2019/12/07 Python
Python HTTP下载文件并显示下载进度条功能的实现
2020/04/02 Python
如何在mac下配置python虚拟环境
2020/07/06 Python
python爬虫中的url下载器用法详解
2020/11/30 Python
加拿大国民体育购物网站:National Sports
2018/11/04 全球购物
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
市场营销管理制度
2014/01/29 职场文书
植树节活动总结
2014/04/30 职场文书
企业宣传口号
2014/06/12 职场文书
领导班子四风对照检查材料范文
2014/09/27 职场文书
党的群众路线教育实践活动教师自我剖析材料
2014/10/09 职场文书
MySQL 重命名表的操作方法及注意事项
2021/05/21 MySQL
如何理解PHP核心特性命名空间
2021/05/28 PHP