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


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 相关文章推荐
List all the Databases on a SQL Server
Jun 21 Javascript
IE下通过a实现location.href 获取referer的值
Sep 04 Javascript
window.location的重写及判断location是否被重写
Sep 04 Javascript
JavaScript获取页面中第一个锚定文本的方法
Apr 03 Javascript
jQuery处理图片加载失败的常用方法
Jun 08 Javascript
js实现创建删除html元素小结
Sep 30 Javascript
javascript self对象使用详解
Oct 18 Javascript
jquery+html仿翻页相册功能
Dec 20 Javascript
关于Vue实现组件信息的缓存问题
Aug 23 Javascript
react-router4 配合webpack require.ensure 实现异步加载的示例
Jan 18 Javascript
vue 下列表侧滑操作实例代码详解
Jul 24 Javascript
iview同时验证多个表单问题总结
Sep 29 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
写出高质量的PHP程序
2012/02/04 PHP
Laravel实现用户注册和登录
2015/01/23 PHP
详解yii2使用多个数据库的案例
2017/06/16 PHP
Laravel Validator自定义错误返回提示消息并在前端展示
2019/05/09 PHP
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
2013/12/11 Javascript
使用jquery animate创建平滑滚动效果(可以是到顶部、到底部或指定地方)
2014/05/27 Javascript
Jquery自定义button按钮的几种方法
2014/06/11 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
使用AngularJS编写多选按钮选中时触发指定方法的指令代码详解
2017/07/24 Javascript
Bootstrap实现可折叠分组侧边导航菜单
2018/03/07 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
详解VUE中的插值( Interpolation)语法
2020/10/18 Javascript
[27:28]Ti4 冒泡赛第二天 iG vs NEWBEE 1
2014/07/15 DOTA
给你选择Python语言实现机器学习算法的三大理由
2017/11/15 Python
python数据分析数据标准化及离散化详解
2018/02/26 Python
pycharm中成功运行图片的配置教程
2018/10/28 Python
python 划分数据集为训练集和测试集的方法
2018/12/11 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
2020/06/23 Python
佳能法国商店:Canon法国
2019/02/14 全球购物
简历的自荐信
2013/12/19 职场文书
十岁生日同学答谢词
2014/01/19 职场文书
员工评语大全
2014/01/19 职场文书
新三好学生主要事迹
2014/01/23 职场文书
酒店销售经理岗位职责
2014/01/31 职场文书
2014年三八妇女节活动方案
2014/02/28 职场文书
2014年师德承诺书
2014/05/23 职场文书
房地产项目合作意向书
2015/05/08 职场文书
大学生见习总结报告
2015/06/24 职场文书
老人与海读书笔记
2015/06/26 职场文书
新娘婚礼答谢词
2015/09/29 职场文书
2016幼儿园教师年度考核评语
2015/12/01 职场文书
财务人员廉洁自律心得体会
2016/01/13 职场文书
2016秋季运动会开幕词
2016/03/04 职场文书
教你使用Python获取QQ音乐某个歌手的歌单
2022/04/03 Python