支付,配送....流程,模拟后台返回状态码 --飞机票项目
来源:互联网 发布:子网网络号怎么算 编辑:程序博客网 时间:2024/05/17 08:27
Hello,我们做项目的时候经常会遇到一些支付流程啊,配送流程啊。说白的就是一个’时间表’,虽然我这么说是‘时间表’,可能在术语上不对,我也不知道怎么解释了。
请看下图:我们要实现的效果图:
一看图,相信大家都明白了,项目中会遇到很多这种交互。
逻辑思路分析:
1.背景条跟随状态变化而变化。
2.文字内的背景色跟颜色跟随状态变化而变化
那么应该怎么去考虑写代码呢? 首先我说过了我们是通过一个状态码来判断 我们的背景条到那里,还有我们数字内的背景色跟字体颜色。那么 我们可以反过来想想 后台是不是 传一个 值 等于 多少 我们写一个假如值:
num:1 填写信息状态
num:2 确认信息状态
num:3 支付状态
num:4 完成状态
因为我们没有后台,我们就写四个bntton 按钮 来模拟这四个值 的变化把!
<script type="text/javascript" src="js/vue.js"></script><style type="text/css"> *{ margin: 0; padding: 0; list-style: none; } #box{ width: 1200px; height: 60px; border: 1px solid red; margin: 50px auto; padding: 20px 30px; position: relative; /*overflow: hidden;*/ } li{ float: left; padding: 0 105px; z-index: 99; width: 90px; } li>div{ width: 40px; height: 40px; border-radius: 100%; background: #999; text-align: center; line-height: 40px; margin: 0 auto; transition: all 1s; } p{ text-align: center; } #bg{ position: absolute; width: 95.24%; background: #999; height: 20px; z-index: -1; top: 30px; } .bgs{ height: 100%; background: red; transition: all 0.5s; } #btn{ position: absolute; bottom: -30px; } .active{ background: blue; color: #fff; }</style><div id="box"> <ul> <li ref='list'> <div :class="{active:state.active1}">1</div> <p>填写信息</p> </li> <li> <div :class="{active:state.active2}">2</div> <p>确认信息</p> </li> <li> <div :class="{active:state.active3}">3</div> <p>支付</p> </li> <li> <div :class="{active:state.active4}">4</div> <p>完成</p> </li> </ul> <div id="bg"> <div class="bgs" :style='activeObj'></div> </div> <div id='btn'> <button @click='add1'>填写信息</button> <button @click='add2'>确认信息</button> <button @click='add3'>支付</button> <button @click='add4'>完成</button> </div></div>
布局就不多说了直接看页面里面的几个属性:
1.首先 我给这四个li绑定了 同一个类 就是 active的类,选中的样式,然后通过vue让他们都为fasle;
2.其次 给背景条绑定了一个style 是一个对象,里面是背景条的宽 width
3.最后我给每一个按钮添加不同的点击事件
分析我们的JS代码:
<script type="text/javascript"> var vm = new Vue({ el:'#box', data:{ activeObj:{ width:0 }, state:{ active1:false, active2:false, active3:false, active4:false, num:'', listWidth:'' } }, methods:{ add1(){ this.state.num = 1; // console.log(this.$refs.list.getBoundingClientRect().width) // console.log(this.state.active1) }, add2(){ this.state.num = 2 }, add3(){ this.state.num = 3 }, add4(){ this.state.num = 4 } }, watch:{ state:{ handler(newVale){ if (newVale.num == 1) { this.activeObj.width = this.state.listWidth +'px'; this.state.active1 = true; this.state.active2 = false; this.state.active3 = false; this.state.active4 = false; }else if (newVale.num == 2 ) { this.activeObj.width = this.state.listWidth * 2 +'px' this.state.active1 = true; this.state.active2 = true; this.state.active3 = false this.state.active4 = false }else if( newVale.num == 3){ this.activeObj.width = this.state.listWidth * 3 +'px' this.state.active1 = true; this.state.active2 = true; this.state.active3 = true this.state.active4 = false }else if(newVale.num == 4){ this.activeObj.width = this.state.listWidth * 4 +'px' this.state.active1 = true; this.state.active2 = true; this.state.active3 = true this.state.active4 = true } },deep: true } }, mounted(){ this.state.listWidth = this.$refs.list.getBoundingClientRect().width console.log(this.state.active1) } })</script>
通过我们一开始的逻辑,我们说过要通过一个num值的返回的状态来改变我们想改变的样式!
所以我们就通过自定义 一个num值,然后点击按钮的时候改变 num值的变化。然后我们通过vue中的监听num值来改变样式!(注意一点:这里因为是对象类型所以监听要加 deep:true)。
我们要说一下,ref=‘list’ 大家可以上网查一下,在mounted里面的代码是 获取li元素的宽度的。
最后,我写的可能比较多,不够简单,因为能想到的都想到了,如果大家有更好的代码,跟思路可以给我在下方留言或者添加我好友 QQ992262716.
好了!我是杨小宝,感谢您的阅读!(持续更新飞机票项目所有知识点)
- 支付,配送....流程,模拟后台返回状态码 --飞机票项目
- Android 支付宝后台支付流程
- 购物网站28:类型转换器---日期----配送方式----性别----订单状态----支付方式----性别----系统权限
- 后台返回状态码,js验证跳转登录
- 飞机票
- 飞机票
- 购物网站3:订单实体类设计----配送方式--留言--订单--订单联系方式--订单配送信息--订单项--订单状态--支付方式
- 支付宝java后台接入简单流程
- 20140725配送平台项目
- vue项目模拟后台数据
- 支付宝、微信sdk支付流程模拟
- 编写一个后台项目流程
- Session Storage(本地缓存) -- 飞机票项目
- Android微信支付流程及返回码-1之坑
- Android微信支付流程及返回码-1之坑
- GooglePlay Console 后台配置以及支付订单验证流程
- 配送中心的作业流程及其管理
- 配送人司机端操作流程
- An Interesting Sequence
- 299. Bulls and Cows
- 原生ajax示例XMLHttpRequest
- itext7学习笔记杂谈系列1——添加新的页面和新的AcroForm
- 支付宝小程序逐鹿计划已经启动,且看鹿死谁手!
- 支付,配送....流程,模拟后台返回状态码 --飞机票项目
- Android 中AIDL的使用与理解
- MongoDB的安装步骤(Windows版)
- Xcode9 和iOS11适配和特性
- Could not determine type for: String, at table
- 台湾大学机器学习基石笔记整理
- WebLogic部署项目的三种方式
- ceph存储 Linux内核分析coredump文件内核代码崩溃
- 常用的4种大数据分析方法