Vue中怎么使用js制作进度条式数据对比动画
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,本文小编为大家详细介绍"Vue中怎么使用js制作进度条式数据对比动画",内容详细,步骤清晰,细节处理妥当,希望这篇"Vue中怎么使用js制作进度条式数据对比动画"文章能帮助大家解决疑惑,下面跟着小编的
千家信息网最后更新 2025年02月01日Vue中怎么使用js制作进度条式数据对比动画
本文小编为大家详细介绍"Vue中怎么使用js制作进度条式数据对比动画",内容详细,步骤清晰,细节处理妥当,希望这篇"Vue中怎么使用js制作进度条式数据对比动画"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
实现的效果:(初始化以及浏览器resize的时候两侧的条形为向两侧递增的动画,其中两端的数字也是递增的动画)
HTML部分:
您的投资能力分析我 平均{{item.title}}{{item.score | scoreFilter}}{{item.average | scoreFilter}}
filters: { scoreFilter (val) { if (!isNaN(val)) { return Number(val) < 10 ? `0${parseInt(val)}` : parseInt(val) } else { return '' } }}
CSS部分:
.no-ivatargo-chart-b { width: 100%; overflow: hidden; display: flex; flex-direction: column; font-size: 14.76px; color: #bfbfbf; background-color: #0f1318; .title { display: flex; align-items: center; font-size: 17.22px; color: #bfbfbf; margin-bottom: 15px; } .investment-ability-picture-header { width: 400px; margin-left: 130px; display: flex; align-items: center; justify-content: space-around; margin-bottom: 10px; color: #fff; } .investment-ability-picture-outer-container { display: flex; justify-content: center; align-items: center; height: calc(100% - 50px); .investment-ability-picture-container { display: flex; flex-direction: column; .investment-ability-picture { display: flex; flex-direction: column; margin-bottom: 10px; .investment-ability-picture-top { display: flex; .investment-left { font-size: 14.76px; color: #bfbfbf; width: 100px; display: flex; align-items: center; .left-icon-outer { width: 14px; height: 14px; background-color: #3fb050; border-radius: 50%; position: relative; margin-right: 5px; .left-icon-inner { position: absolute; width: 5px; height: 5px; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: #fff; border-radius: 50%; } } } .investment-right { display: flex; align-items: center; justify-content: space-between; .investment-info { display: flex; align-items: center; justify-content: space-between; .all-line { width: 400px; height: 10px; background-color: #57606e; border-radius: 2px; margin-left: 10px; margin-right: 10px; position: relative; .my-line { width: 0; height: 10px; position: absolute; top: 0; right: 200px; background-color: #f5a623; border-top-left-radius: 2px; border-bottom-left-radius: 2px; } .other-line { width: 0; height: 10px; position: absolute; top: 0; left: 200px; background-color: #1890ff; border-top-right-radius: 2px; border-bottom-right-radius: 2px; } } .my-color { width: 20px; color: #f5a623; } .average-color { width: 20px; color: #1890ff; } } } } .investment-ability-picture-bottom { display: flex; flex-direction: column; background-color: #ccc; width: 400px; margin-left: 130px; padding: 5px; color: #000; } } } } .investment-ability-picture-footer { width: 400px; margin-left: 130px; display: flex; align-items: center; justify-content: space-between; color: #fff; }}
JS部分:
1.子组件当中
mounted () { let that = this _window.onresize = () => { clearTimeout(that.resizeTimer) that.resizeTimer = setTimeout(() => { that.handleGetAllWidth() }, 1000) } this.$nextTick(() => { clearTimeout(this.resizeTimerB) this.resizeTimerB = setTimeout(() => { this.handleGetAllWidth() }, 200) })} // methods当中handleGetAllWidth () { this.$emit('getAllWidth', this.$refs.allLine.offsetWidth)}
2.父组件当中
getAllLineWidth (data) { this.allLineWidth = data this.calculateIvatargo()},// 给条形图添加计算宽度,并形成动画calculateIvatargo () { this.myTimerArr.forEach((value, index) => { clearInterval(value) }) this.averageTimerArr.forEach((value, index) => { clearInterval(value) }) this.myTimerArr = [] this.averageTimerArr = [] let myVal = [] let averageVal = [] this.myAbilityArr.forEach((value, index) => { myVal[index] = 0 averageVal[index] = 0 this.myTimerArr[index] = setInterval(() => { if (myVal[index] > Number(this.allLineWidth) * Number(value.score) / 200 || !value.score) { clearInterval(this.myTimerArr[index]) value.score ? myVal[index] = Number(this.allLineWidth) * Number(value.score) / 200 : myVal[index] = 0 this.$set(value, 'myWidth', myVal[index] + 'px') this.$set(value, 'myNum', value.score) } else { myVal[index]++ this.$set(value, 'myWidth', myVal[index] + 'px') this.$set(value, 'myNum', myVal[index] / 2) } }, 5) this.averageTimerArr[index] = setInterval(() => { if (averageVal[index] > Number(this.allLineWidth) * Number(value.average) / 200 || !value.average) { clearInterval(this.averageTimerArr[index]) value.average ? averageVal[index] = Number(this.allLineWidth) * Number(value.average) / 200 : averageVal[index] = 0 this.$set(value, 'averageWidth', averageVal[index] + 'px') this.$set(value, 'averageNum', value.average) } else { averageVal[index]++ this.$set(value, 'averageWidth', averageVal[index] + 'px') this.$set(value, 'averageNum', averageVal[index] / 2) } }, 5) })}
读到这里,这篇"Vue中怎么使用js制作进度条式数据对比动画"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
动画
数据
进度
制作
文章
部分
内容
条形
组件
妥当
两端
宽度
思路
效果
数字
新知
时候
更多
步骤
浏览器
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
一财软件开发
2021中国网络安全
南京华昊网络技术有限公司
数据库有多少个sql语句
国家网络安全的相关规定
人民网数据库网站
吉林什么是网络技术服务基础
重庆蓝博互联网科技有限公司
软件开发后端找工作
成考软件开发大专
处理器连接服务器异常
wp8软件开发
大学数据库服务器
上海腾科网络技术
硬科技与互联网创业实战课
ps更新数据库一字段
数据库增量同步6
重庆系统软件开发价格表
中金软件开发秋招面试
服务器啸声
论之语网络技术公司产值
网络安全防范基础知识
浙江字符检测软件开发
阿里云上编程大数据库
杨浦区项目数据库服务商销售
单节点数据库升级rac
西安浦发银行软件开发岗工资
psv重构数据库教程
国家颁布的网络安全法律
怎么链接linux服务器