Vue中怎么使用js制作进度条式数据对比动画
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,本文小编为大家详细介绍"Vue中怎么使用js制作进度条式数据对比动画",内容详细,步骤清晰,细节处理妥当,希望这篇"Vue中怎么使用js制作进度条式数据对比动画"文章能帮助大家解决疑惑,下面跟着小编的
千家信息网最后更新 2025年11月08日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安全错误
数据库的锁怎样保障安全
无锡猛龙网络技术
数据库表中输入数据的语句
湖南锦泰互联网科技
服务器主板卡53
计算机网络安全基础舞蹈动作
空间数据库 建库流程
车载网络技术发现历程
pyton软件开发
万方数据库与cnki区别
丽水网络安全大数据余辉
象山嵌入式软件开发项目
软件开发买哪个笔记本好
唐山市天气预报软件开发
三大建筑软件开发商
其他软件开发业 税务
江苏图书馆特色数据库
崇左市网络安全和信息化
网络安全法正在实施的时间是
procc无法关闭数据库
郑州千端网络技术
洛阳支付宝健康码服务器
自己创造的网络安全感
广西移动城管软件开发系统
虚拟机 安装数据库
哈尔滨直播软件开发
西安网络安全事件
回收物流网络技术创新
武汉机架式服务器
随身办服务器地址是填什么地址
数据库中的图片格式