vue数字金额动态变化功能实现方法详解

 更新时间:2022年09月15日 08:39:33   作者:Saga Two  
这篇文章主要介绍了vue实现数字金额动态变化效果,数字动态变化是我们在前端开发中经常需要做的效果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

1 前言

  在某些场景中,要求我们能够动态与用户进行交互,如页面加载一个数字的时候,动态改变一个固定地数字,然后将数字展现在页面上,如当前的积分或者余额等;以达到提高与用户交互体验的效果。下面我们就在vue中使用两种方法来实现数字动态滚动效果。

2 数字动态滚动

2.1 计时器实现

先上效果:

  以上效果是点击按钮加载金额,实际情况是页面加载的时候就需要。这个时候我们需要在页面加载的时候执行用该方法。以上实例用到的代码如下:

代码:

<template>
  <div>
    <title-bar :title="title" @goBack="goback"></title-bar>
     <div class="amount-box">
      <label>您的余额为:</label>
      <label>{{ amountFormatPage }}</label>
    </div>
    <t-button @clickhandle="changeAmount" name="计时器"></t-button>
  </div>
</template>
<script>
import TitleBar from "@/components/TitleBar";
import tButton from "@/components/TButton";
import { amountFormat } from "@/util/utils";
export default {
  components: {
    TitleBar,
    tButton
  },
  data() {
    return {
      res: false, //
      title: "动态变化金额",
      amount: 0, //初始amout
      amoutFrame: 0,
      amountShow: 0
    };
  },
  computed: {
    // 计算属性格式化页面金额
    amountFormatPage() {
      return amountFormat(this.amount);
    }
  },
  methods: {
    changeAmount() {
      const total = 16000; //设置初始总金额
      const _this = this;
      let i = 0;
      //变化15次,每次间隔30毫秒
      const amoutInterval = setInterval(() => {
        if (i < 15) {
          i++;
          _this.amount = (total * i) / 15;
        } else {
          clearInterval(amoutInterval);
        }
      }, 30);
    },
    goback() {
      //
    }
  }
};
</script>
<style lang="scss" scoped>
.amount-box {
  label {
    display: box;
  }
}
</style>

除了这个效果以外,我们可以通过调节计时器的间隔时间来控制金额变化的速度;通过调节i的大小来控制变化的次数。主要是控制这两个参数来达到我们想要的效果。

2.2 动画帧实现

实现效果如下:

vue代码如下:

<template>
  <div>
    <title-bar :title="title" @goBack="goback"></title-bar>
    <div>
      <label>您的余额为:</label>
      <label>{{ amountShow }}</label>
    </div>
    <t-button @clickhandle="changeAmountFrame" name="动画帧"></t-button>
  </div>
</template>
<script>
import TitleBar from "@/components/TitleBar";
import tButton from "@/components/TButton";
import { amountFormat } from "@/util/utils";
export default {
  components: {
    TitleBar,
    tButton
  },
  data() {
    return {
      res: false, //
      title: "动态变化金额",
      amount: 0, //初始amout
      amoutFrame: 0,
      amountShow: 0
    };
  },
  methods: {
    changeAmountFrame() {
      const total = 26666;
      const frameNum = 60;
      const _this = this;
      let animation = window.requestAnimationFrame(function f() {
        if (_this.amoutFrame < total) {
          _this.amoutFrame = _this.amoutFrame + total / frameNum;
          // 动画继续
          animation = window.requestAnimationFrame(f);
        } else {
          _this.amoutFrame = total;
          // 动画停止
          window.cancelAnimationFrame(f);
        }
        _this.amountShow = amountFormat(_this.amoutFrame);
      });
    },
    goback() {
      //
    }
  }
};
</script>
<style lang="scss" scoped>
.amount-box {
  label {
    display: box;
  }
}
</style>

window.requestAnimationFrame()是执行动画帧的关键方法,对应window.cancelAnimationFrame()是停止动画帧的方法。其中动画帧的价格时间一把为16ms,同上,通过调节framenum参数来控制一共播放多少帧,来达到我们想要的效果。

3 总结

  本次用两种方法实现金额数字等动态变化,偏向应用领域,若想了解即使器和动画帧的更深层次原理,请一部专业网站或者动手舱室一下。

到此这篇关于vue数字金额动态变化功能实现方法详解的文章就介绍到这了,更多相关vue数字动态变化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • element-ui表格合并span-method的实现方法

    element-ui表格合并span-method的实现方法

    这篇文章主要介绍了element-ui表格合并span-method的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • vue.js实现点击后动态添加class及删除同级class的实现代码

    vue.js实现点击后动态添加class及删除同级class的实现代码

    这篇文章主要介绍了vue.js实现点击后动态添加class及删除同级class的相关资料,需要的朋友可以参考下
    2018-04-04
  • Vue概念及常见命令介绍(1)

    Vue概念及常见命令介绍(1)

    这篇文章主要为大家详细介绍了Vue概念及常见命令,介绍了vue.js声明式渲染、双向绑定及常用指令,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • van-dialog 组件调用报错的解决

    van-dialog 组件调用报错的解决

    这篇文章主要介绍了van-dialog 组件调用报错的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • 使用Vue.set()方法实现响应式修改数组数据步骤

    使用Vue.set()方法实现响应式修改数组数据步骤

    今天小编就为大家分享一篇使用Vue.set()方法实现响应式修改数组数据步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • vue项目开发环境工具node搭建过程

    vue项目开发环境工具node搭建过程

    最近在开始接触做vue框架的前端项目,以前用的前端比如html,js,css等都是比较原生的,写好后直接浏览器打开就行,今天就先记录一下vue的开发运行搭建过程,感兴趣的朋友一起看看吧
    2023-09-09
  • Vue中跨标签通信详解

    Vue中跨标签通信详解

    这篇文章主要为大家详细介绍了介绍了Vue中跨标签通信的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • vue项目实现登陆注册效果

    vue项目实现登陆注册效果

    这篇文章主要为大家详细介绍了vue项目实现登陆注册效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Vue3 重构函数透传示例解析

    Vue3 重构函数透传示例解析

    这篇文章主要为大家介绍了Vue3 重构函数透传示例解析
    2023-02-02
  • 用Vue.js方法创建模板并使用多个模板合成

    用Vue.js方法创建模板并使用多个模板合成

    在本篇文章中小编给大家分享了关于如何使用Vue.js方法创建模板并使用多个模板合成的相关知识点内容,需要的朋友们学习下。
    2019-06-06

最新评论