vue 实现数字缓动效果

作者: jackPan | 来源:发表于2017-11-24 11:23 被阅读160次

经常遇到这样的效果,数字的变化,比如从 0 到 500 这样的。
直接变当然是可以的,但是加一些缓动效果用户体验会更好。

假设你在一个vue的项目中
安装依赖:
npm install --save @tweenjs/tween.js
或者直接使用cdn:
<script src="https://cdn.bootcss.com/tween.js/r14/Tween.min.js"></script>

简单效果图:


image.png

代码如下:

html:

<div id="app">
  <button @click="change">start</button>
  <button @click="reset">reset</button>
  <div>init-num: {{num}}</div>
  <div>tween-num: {{numTween}}</div>
</div>

css:

body {
    display: flex;
    height: 100vh;
}
#app {
    margin: auto;
    width: 300px;
}

js:

import TWEEN from '@tweenjs/tween.js'
new Vue({
    el: '#app',
    data () {
        return {
            num: 0,
            numTween: 0
        }
    },
    watch: {
        num (newValue, oldValue) {
            new TWEEN.Tween({
                number: oldValue
            })
            .to({
                number: newValue
            }, 5000)
            .onUpdate(tween => {
                this.numTween = tween.number.toFixed(0)
            })
            .start()
            function animate() {
                    if (TWEEN.update()) {
                            requestAnimationFrame(animate);
                    }
            }
            animate()
        }
    },
    methods: {
        change () {
            this.num = 500
        },
        reset () {
            this.num = 0
        }
    }
})

具体做法:
结合了 vue 的 watch 和 tween.js 的功能 轻松实现了数字的缓动

具体demo vue number tween by 潘家大少爷 (@jackpan) on CodePen.

相关文章

  • vue 实现数字缓动效果

    经常遇到这样的效果,数字的变化,比如从 0 到 500 这样的。直接变当然是可以的,但是加一些缓动效果用户体验会...

  • 用缓动函数模拟弹簧,碰撞等动画效果

    最近学习了一下用缓动函数模拟物理动画的效果,可以实现一些比较高级的动画效果,比如弹簧效果等。 1.缓动函数的动画效...

  • 42、缓动效果

    动画中的三次贝塞尔曲线可以定义动画的进度,设置相应的值可以使动画突破动画本身的范围 可以看到元素的缩放动画,会使元...

  • 前端HTML5移动端实现原生上滑框效果

    实现效果 先上图说明一下实现的效果,如下面动图: 前言 效果实现代码建立在vue项目工程之上,但是具体实现原理通用...

  • Tween 各种缓动效果

    参考链接

  • jq插件

    (1)使div垂直水平居中的插件 (2)回到顶部插件 给指定的按钮选择器绑定一个函数,即可实现效果 实现这种缓动效...

  • VUE常用插件

    数字滚动效果Vue CountTo# 安装npm install vue-count-to #使用

  • 11Vue.js实现全选与反选

    vue实现全选与反选 示例效果: 实现代码:

  • 利用对齐方式进行UI收缩效果

    一:效果 二:实现方式 缓动mask的宽度,进行收缩 1: 2: 3:代码 总结:主要利用对齐方式和中心点,这一点...

  • 基于Vue-Echarts实现地图渐热效果

    简介 基于Element-ui, Vue和Vue-echarts的地图渐热效果实现。 效果展示地址:https:/...

网友评论

    本文标题:vue 实现数字缓动效果

    本文链接:https://www.haomeiwen.com/subject/xlmxbxtx.html