阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

简单介绍Vue中使用js制作进度条式数据对比动画

317次阅读
没有评论

共计 4137 个字符,预计需要花费 11 分钟才能阅读完成。

导读 这篇文章主要为大家详细介绍了 Vue 中使用 js 制作进度条式数据对比动画,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了 Vue 中使用 js 制作进度条式数据对比动画的具体代码,供大家参考,具体内容如下

实现的效果:(初始化以及浏览器 resize 的时候两侧的条形为向两侧递增的动画,其中两端的数字也是递增的动画)

简单介绍 Vue 中使用 js 制作进度条式数据对比动画

HTML 部分:
 您的投资能力分析
    
    
      
        
          我
          平均
        
        
          
            
              
                
              
              {{item.title}}
            
            
              
                {{item.score | scoreFilter}}
                
                  
                  
                
                {{item.average | scoreFilter}}
              
            
          
        
        
          100
          0
          100
filters: {scoreFilter (val) {if (!isNaN(val)) {return Number(val) 
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)
  })
}

以上就是本文的全部内容,希望对大家的学习有所帮助.

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计4137字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7802022
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛 NAS 玩转 Frpc 并且配置,随时随地直连你的私有云 大家好,我是星哥,最近在玩飞牛 NAS。 在数...
升级自动部署更新SSL证书系统、申请godaddy的APIKEY

升级自动部署更新SSL证书系统、申请godaddy的APIKEY

升级自动部署更新 SSL 证书系统、申请 godaddy 的 APIKEY 公司之前花钱购买的 ssl 证书快...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛 NAS-8:有了 NAS 你可以干什么?软件汇总篇 前言 哈喽各位玩友!我是是星哥,不少朋友私...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...