返回顶部
首页 > 资讯 > 精选 >Vue中怎么使用js制作进度条式数据对比动画
  • 350
分享到

Vue中怎么使用js制作进度条式数据对比动画

2023-06-29 17:06:42 350人浏览 安东尼
摘要

本文小编为大家详细介绍“Vue中怎么使用js制作进度条式数据对比动画”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue中怎么使用js制作进度条式数据对比动画”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。实现的

本文小编为大家详细介绍“Vue中怎么使用js制作进度条式数据对比动画”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue中怎么使用js制作进度条式数据对比动画”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

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

Vue中怎么使用js制作进度条式数据对比动画

HTML部分:

<div class="no-ivatarGo-chart-b">  <div class="investment-ability">    <div class="title">      <span>您的投资能力分析</span>    </div>    <div class="investment-ability-picture-outer-container">      <div class="investment-ability-picture-container">        <div class="investment-ability-picture-header"             ref="allLine">          <span>我</span>          <span>平均</span>        </div>        <div class="investment-ability-picture"             v-for="(item, index) in abilityArr"             :key="index">          <div class="investment-ability-picture-top">            <div class="investment-left">              <div class="left-icon-outer">                <div class="left-icon-inner"></div>              </div>              <span>{{item.title}}</span>            </div>            <div class="investment-right">              <div class="investment-info">                <span class="my-color">{{item.score | scoreFilter}}</span>                <div class="all-line">                  <div class="my-line"                       :></div>                  <div class="other-line"                       :></div>                </div>                <span class="average-color">{{item.average | scoreFilter}}</span>              </div>            </div>          </div>        </div>        <div class="investment-ability-picture-footer">          <span>100</span>          <span>0</span>          <span>100</span>        </div>      </div>    </div>  </div></div>
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部分:

子组件当中

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)}

父组件当中

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制作进度条式数据对比动画”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: Vue中怎么使用js制作进度条式数据对比动画

本文链接: https://lsjlt.com/news/325801.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Vue中使用js制作进度条式数据对比动画
    本文实例为大家分享了Vue中使用js制作进度条式数据对比动画的具体代码,供大家参考,具体内容如下 实现的效果:(初始化以及浏览器resize的时候两侧的条形为向两侧递增的动画,其中两...
    99+
    2024-04-02
  • Vue中怎么使用js制作进度条式数据对比动画
    本文小编为大家详细介绍“Vue中怎么使用js制作进度条式数据对比动画”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue中怎么使用js制作进度条式数据对比动画”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。实现的...
    99+
    2023-06-29
  • 怎么使用css3简单制作进度条
    这篇文章给大家分享的是有关怎么使用css3简单制作进度条的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。html:<body><div id="box&...
    99+
    2024-04-02
  • 使用Compose制作抖音快手视频进度条Loading动画效果
    目录引言Loading效果BoxWithConstraints代码animateFloat获取动画更新值线条动画值执行渐隐最终效果引言 现在互联网产品,感觉谁家的App不整点视频功能...
    99+
    2024-04-02
  • CSS3中怎么制作一个彩色进度条样式
    CSS3中怎么制作一个彩色进度条样式,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、制作静态的紫色条纹进度条html代码:XML/HTML ...
    99+
    2024-04-02
  • 使用canvas怎么实现一个圆形进度条动画
    这期内容当中小编将会给大家带来有关使用canvas怎么实现一个圆形进度条动画,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. canvas的HTML部分很简单就一个canvas标签canvas画布的宽高...
    99+
    2023-06-09
  • vue中怎么使用SVG实现圆形进度条音乐播放
    今天小编给大家分享一下vue中怎么使用SVG实现圆形进度条音乐播放的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。效果图:实现...
    99+
    2023-06-29
  • 使用phonegap怎么对数据库进行操作
    使用phonegap怎么对数据库进行操作?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。实例如下:<!DOCTYPE html> ...
    99+
    2023-06-09
  • 使用Node怎么对MongoDB数据库进行操作
    这篇文章给大家介绍使用Node怎么对MongoDB数据库进行操作,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.使用 MongoDB模块 进行操作 首先在工作目录安装 mo...
    99+
    2024-04-02
  • 使用gorm怎么对MySql数据库进行操作
    本篇文章给大家分享的是有关使用gorm怎么对MySql数据库进行操作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、表中字段区分大小写的设置在使用gorm查询的时候,会出现账...
    99+
    2023-06-07
  • PHP中怎么使用strcmp()函数对字符串进行比较
    这篇文章给大家分享的是有关PHP中怎么使用strcmp()函数对字符串进行比较的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。语法:strcmp(string $str1 , stri...
    99+
    2023-06-14
  • Android中怎么利用LitePal对数据库进行操作
    Android中怎么利用LitePal对数据库进行操作,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。首先在app/build.grade文件中编辑dependencies{.....
    99+
    2023-06-04
  • 怎么在python中利用BytesIO操作二进制数据
    今天就跟大家聊聊有关怎么在python中利用BytesIO操作二进制数据,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发...
    99+
    2023-06-14
  • ODBC中怎么利用CRecordset类对数据库进行操作
    ODBC中怎么利用CRecordset类对数据库进行操作,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 1.MFC中的ODBC类...
    99+
    2024-04-02
  • Java中怎么利用Streams对数据库进行查询操作
    Java中怎么利用Streams对数据库进行查询操作,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。示例数据库我们使用的示例数据库是Saki...
    99+
    2024-04-02
  • Mongodb中怎么使用sort()方法对数据进行排序
    这篇文章主要介绍Mongodb中怎么使用sort()方法对数据进行排序,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python中使用sort()方法可以对列表排序,在编程数据库MongoDB中,排序方法也是sort...
    99+
    2023-06-14
  • 在Spring boot项目中使用 mybatis 与Vue实现对数据进行增删改查操作
    在Spring boot项目中使用 mybatis 与Vue实现对数据进行增删改查操作?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。pom文件<project xml...
    99+
    2023-05-31
    vue spring boot mybatis
  • 怎么在python中使用Pandas对MySQL数据库进行读写
    本篇文章给大家分享的是有关怎么在python中使用Pandas对MySQL数据库进行读写,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、read_sql_query 读取 m...
    99+
    2023-06-14
  • 使用Ajax异步请求怎么对后台数据进行动态分页
    本篇文章为大家展示了使用Ajax异步请求怎么对后台数据进行动态分页,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。ajax请求后台拿到json类型的数据后,可以在它的success回调方法中进行动态分...
    99+
    2023-06-08
  • 怎么在R语言中使用dplyr包对数据进行处理
    这期内容当中小编将会给大家带来有关怎么在R语言中使用dplyr包对数据进行处理,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。数据筛选函数:#可使用filter()函数筛选/查找特定条件的行或者样本#fil...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作