此文为js 利用滑动条实现投资计算器,并且对复投与非复投的盈利进行对比。如下图:


技术方面就用到一个简单的滑动条,因为感觉比较简单所以打算手写一下,不想再因为这一个小东西引入一个庞大的UI插件,该文就此诞生。

产品需求

  1. 本金每 100 移动一格
  2. 年利率每 0.5 移动一格
  3. 计算复投与不复投的年收益

配置参数

data() {return {balance: "1000", // 本金rate: "8", // 利率maxBalance: "20000", // 最大本金maxRate: "30", // 最大利率balancePercent: "", // 本金百分比ratePercent: "", // 利率百分比balanceStep: 100, // 本金每次滑动的最小步数rateStep: 0.5, // 利率每次滑动的最小步数touchx: 0 //x轴移动距离};
},

滚动条核心js

// 移动端事件
onTouchEvent(e) {// 滑块移动横向距离this.touchx = e.touches[0].pageX - 40;this.computedAmount(e.target.id);
},
// pc 端事件
onMouseEvent(e) {// 滑块移动横向距离this.touchx = event.offsetX - 12;this.computedAmount(e.target.id);document.onmousemove = event => {if (event.target.className == "pro-mask") {this.touchx = event.offsetX - 12;this.computedAmount(e.target.id);}};document.onmouseup = () => {document.onmousemove = document.onmouseup = null;};
}

计算滚动条数值

methods: {// 计算本金getBalance() {// 计算滚动条百分比let p = new BigNumber(this.touchx).div(this.$refs.progress.offsetWidth).times(this.maxBalance).idiv(this.balanceStep) //整除,保留0位小数.div(this.maxBalance).times(this.balanceStep).times(100).toFixed(2);this.balancePercent = p - 0 > 100 ? 100 : p;// 计算本金金额let num = new BigNumber(this.balancePercent).div(100).times(this.maxBalance).toFixed(0);this.balance = num - 0 > this.maxBalance ? this.maxBalance : num;},// 计算利率getRate() {// 计算滚动条百分比let p = new BigNumber(this.touchx).div(this.$refs.progress.offsetWidth).times(this.maxRate).idiv(this.rateStep) //整除,保留0位小数.div(this.maxRate).times(this.rateStep).times(100).toFixed(1);this.ratePercent = p - 0 > 100 ? 100 : p;// 计算年利率数值let num = new BigNumber(this.ratePercent).div(100).times(this.maxRate).toFixed(1);this.rate = num - 0 > this.maxRate ? this.maxRate : num;},
}

通过移动滚动条计算数值

methods:{computedAmount(type = "balance") {this.touchx = this.touchx > 0 ? this.touchx : 0;if (type == "rate") {this.getRate();} else {this.getBalance();}},
}

计算年收益

computed: {// 复投年收益compounded() {let num = this.balance;for (let i = 0; i < 365; i++) {num = new BigNumber(num).times(this.rate).div(36500).plus(num).toNumber();}return new BigNumber(num).minus(this.balance).toFormat(2);},// 不复投年收益notCompounded() {let num = new BigNumber(this.balance).times(this.rate).div(100).toFormat(2);return num;}
},

具体代码

大段的代码大家肯定看不下去的,所以本人在此贴出源码地址供大家下载查阅啦

https://gitee.com/tangying_cn/blog_file/blob/master/progress.zip

我的个人博客有空来坐坐

https://www.wangyanan.online

js progress 滑动条实现投资计算器相关推荐

  1. js怎么给div加滑动条 vue给弹出层加滑动条(一分钟学会用js加滚动条)

    @[TOC](怎么给div加滑动条 给弹出层加滑动条(一分钟学会js加滚动条)) 给div加滑动条 给需要滑动条的div加一个样式 加一个高度,加一个overflow:auto; overflow:a ...

  2. Android按钮滚动条,Android自定义Seekbar滑动条,Pop提示跟随滑动按钮一起滑动

    由于项目需要做出此效果,自定义写了一个. 效果图 思路: 原始的seekbar只有滑动条并没有下方的提示文字,所以我们必须要继承Seekbar重写这个控件. 代码: 在values文件夹下新建attr ...

  3. 第二百二十节,jQuery EasyUI,Slider(滑动条)组件

    jQuery EasyUI,Slider(滑动条)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 Slider(滑动条)组件的使用方法,这个 ...

  4. 微信小程序进度条样式_微信小程序组件progress进度条解读和分析

    progress进度条组件说明: 进度条,就是表示事情当前完成到什么地步了,可以让用户视觉上感知事情的执行. progress进度条是微信小程序的组件,和HTML5的进度条progress类似. pr ...

  5. 【JavaScript吉光片羽】--- 滑动条

    灯光的亮度控制需要一个滑动条,先借用lamp源码中Bar: var Bar = function (opt) {var defaults = {$id: "", // 进度条dom ...

  6. IOS 开发 UIProgress 和 UISlidre 进度条和滑动条组件

    进度条和滑动条组件非常常见,在ios中进度条组件是无法响应事件的.滑动条可响应事件.但是这两个组件均不可设置高度,可设置x,y,width 进度条属性 名称 类型 说明 默认值 progressVie ...

  7. layui表格取消横向滚动条_layui滑动条如何隐藏

    layui滑动条隐藏的方法:首先打开相应代码文件:然后通过"content: ['/home/index/echartTest?role=2&wd='+host,'no']" ...

  8. 小程序自制自带滑动条的表格组件

    小程序自制自带滑动条的表格组件 在编写过程中遇到的难点 1. 表格的编写 2. 表格内容宽度固定 长度自适应 3. 滚动条逻辑及代码编写 4. 滚动条的卡段优化 5. 小程序组件的编写及应用 尾声 先 ...

  9. 获取滑动条位置,动态调整对话框显示位置;为动态添加的button添加click事件

    1.获取滑动条位置,动态调整对话框显示位置 应用场景:页面上有三个按钮,所处位置高度不同,有的按钮需要移动滑动条才能看到,各个按钮点击后要弹出同一个对话框,为了保证对话框始终显示在当前视野的中央位置, ...

最新文章

  1. 《小账本》开发日志 第三天
  2. 01. 对称密码——算法
  3. 高手教你如何用香技巧香水达人教你用香省钱法 - 生活至上,美容至尚!
  4. Android允许应用程序使用Http明文网络传输
  5. 五、python模块以及包
  6. Android之SurfaceView简介(一)
  7. Force.com 多租户架构
  8. 如何评估数据适不适合放入Redis中?
  9. postman发送json格式的post请求
  10. 编程开发之--正则表达式
  11. paip.utf-8,unicode编码的本质输出unicode文件原理 python
  12. 神经网络算法的基本原理,神经网络算法都有哪些
  13. 浏览器显示json格式
  14. python图片识别文字开源库Easyocr使用
  15. 清华大学计算机专业辅修课程,清华大学计算机应用专业-辅修专业
  16. 单道批处理操作系统、多道批处理操作系统以及分时操作系统区别
  17. 计算机网络启动慢,关于电脑网络连接启动的特别慢的解决方法
  18. InDesign Quick Start InDesign快速入门 Lynda课程中文字幕
  19. Proteus仿真电路笔记
  20. 鉴源实验室丨汽车电子架构和CAN网络基础

热门文章

  1. 杰理之音箱方案喇叭输出底噪大【篇】
  2. JAVA设计模式之(九)门面模式(外观模式)
  3. 谷歌键盘切换26键与九宫格中文输入法
  4. linux强制杀死某个端口进程命令
  5. 计算机辅助设计技术基础教程,AutoCAD基础教程(计算机辅助设计系列教材)
  6. 安装和卸载 yum----重装yum
  7. 使用最大-最小树搜索算法和alpha-beta剪枝算法设计有效围棋走法
  8. python 环境变量设置PYTHONPATH
  9. android最新版本馅饼,Android 9.0曝光 新代号或是馅饼 新增功能怒赞!
  10. 绝地求生信号枪在哪个服务器,绝地求生信号枪位置_绝地求生信号枪刷新地点介绍_游戏吧...