基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效


Posted in Javascript onApril 18, 2019

实现目标

浏览各大云平台,发现一个页面特效使用较为频繁,以“百度云”为例(https://cloud.baidu.com/),进入百度云后,当滚动条滚动至“更可靠的数据支持”模块时,页面数据将会开始滚动式增长特效。下面将会介绍我的解决方案,希望有同行更好的解决方案大家一起交流。

基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效

解决思路

主要的解决要点如下:

如何实现数字动画的效果
如何监听滚动条到指定的位置
分解要点寻找解决思路:

一、如何实现数字动画的效果

在vue的官方文档(https://cn.vuejs.org/v2/guide... 中,实现了数字动画特效。于是参照此示例基于tween来完成。

基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效

二、如何监听滚动条到指定的位置

使用 window.addEventListener('scroll',this.handleScroll)监听窗口的滚动,进行位置判断。

实现代码

1.下载tween.js

cnpm install tween.js --save-dev

2.引入tween.js

import TWEEN from 'tween.js'
// ***.vue,注意这里千万别在main.js中引入,否则运行会报:TWEEN is undefined,
// 这边存疑,不知道为什么在main.js中不执行

3.实现数字动画效果和监听滚动条

<div class="sectionRight">
 <span class="numberInit" style="display:none">{{num1}}</span>
 <p class="numberGrow numberGrow1">{{formatNum1}}</p>
 <p class="sectionTxt">抵御攻击</p>
</div>
export default {
 computed:{
 formatNum1(){
  let num = this.animatedNum1
  return (num || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,')
 }
 },
 data () {
 return {
  num1: 0,
  animatedNum1: 0
 }
 },
 watch: {
 num1: function(newValue, oldValue) {
  var vm = this
  function animate (time) {
  requestAnimationFrame(animate)
  TWEEN.update(time)
  }
  new TWEEN.Tween({ tweeningNumber: oldValue })
  .easing(TWEEN.Easing.Quadratic.Out)
  .to({ tweeningNumber: newValue }, 5000)
  .onUpdate(function () {
   vm.animatedNum1 = this.tweeningNumber.toFixed(0) 
   //toFixed(num):num代表小数点后几位
  })
  .start()
  animate()
 }
 },
 methods:{
 setAnimatedNum(){
  this.num1 = 3567892881
 },
 handleScroll(){  
  let windowH = document.body.clientHeight
  let docSrollTop = $(document).scrollTop() //文档卷动值
  let clientH = $(window).height() //视窗大小
  let sectionTop = $(".sectionBody").offset().top //动态文字模块距离文档头部的距离
  let sectionH = $(".sectionBody").height()
  if((docSrollTop + clientH - sectionTop) >= 0 
  && (docSrollTop - sectionTop - sectionH) <= 0){
  this.setAnimatedNum()
  }
 }
 },
 mounted(){
 this.handleScroll()
 window.addEventListener('scroll',this.handleScroll)
 }
}

github源码:https://github.com/Mirror1988...
演示地址 :https://mirror198829.github.i...

总结

以上所述是小编给大家介绍的基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
js动态调用css属性的小规律及实例说明
Dec 28 Javascript
jQuery控制元素显示、隐藏、切换、滑动的方法总结
Apr 16 Javascript
jQuery实现的漂亮表单效果代码
Aug 18 Javascript
在页面中输出当前客户端时间javascript实例代码
Mar 02 Javascript
Javascript中字符串replace方法的第二个参数探究
Dec 05 Javascript
Avalonjs 实现简单购物车功能(实例代码)
Feb 07 Javascript
基于JavaScript实现的快速排序算法分析
Apr 14 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
Jun 16 Javascript
Element UI 自定义正则表达式验证方法
Sep 04 Javascript
详解es6新增数组方法简便了哪些操作
May 09 Javascript
jQuery实现获取多选框的值示例
Feb 07 jQuery
three.js 将图片马赛克化的示例代码
Jul 31 Javascript
Vue的H5页面唤起支付宝支付功能
Apr 18 #Javascript
详解Vue中的scoped及穿透方法
Apr 18 #Javascript
Node.js对MongoDB进行增删改查操作的实例代码
Apr 18 #Javascript
Vue 进阶之路(三)
Apr 18 #Javascript
Vue自定义全局Toast和Loading的实例详解
Apr 18 #Javascript
javascript数据类型中的一些小知识点(推荐)
Apr 18 #Javascript
在element-ui的select下拉框加上滚动加载
Apr 18 #Javascript
You might like
星际原理概述
2020/03/04 星际争霸
PHP+MYSQL开发工具及资源收藏
2007/01/02 PHP
PHP关联链接常用代码
2012/11/05 PHP
php curl模拟post请求小实例
2013/11/13 PHP
php动态变量定义及使用
2015/06/10 PHP
超级兔子让浮动层消失的前因后果
2007/03/09 Javascript
基于Jquery的简单图片切换效果
2011/01/06 Javascript
jQuery1.6 正式版发布并提供下载
2011/05/05 Javascript
弹出最简单的模式化遮罩层的js代码
2013/12/04 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
Javascript实现多彩雪花从天降散落效果的方法
2015/02/02 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
使用BootStrap实现标签切换原理解析
2017/03/14 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
JavaScript之生成器_动力节点Java学院整理
2017/06/30 Javascript
Vue自定义指令写法与个人理解
2019/02/09 Javascript
Vue列表循环从指定下标开始的多种解决方案
2020/04/08 Javascript
JS遍历树层级关系实现原理解析
2020/08/31 Javascript
js实现鼠标滑动到某个div禁止滚动
2020/09/17 Javascript
[36:20]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.17
2020/12/18 DOTA
[41:21]夜魇凡尔赛茶话会 第三期02:看图识人
2021/03/11 DOTA
Python脚本暴力破解栅栏密码
2015/10/19 Python
python将秒数转化为时间格式的实例
2018/09/16 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
2018/12/18 Python
PyTorch 解决Dataset和Dataloader遇到的问题
2020/01/08 Python
Python 实现一个计时器
2020/07/28 Python
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
2014/02/10 HTML / CSS
香港万宁官方海外旗舰店:香港健与美连锁店
2018/09/27 全球购物
Anya Hindmarch官网:奢侈设计师手袋及配饰
2018/11/15 全球购物
佳能法国商店:Canon法国
2019/02/14 全球购物
介绍一下linux文件系统分配策略
2012/11/17 面试题
教育科研先进个人材料
2014/01/26 职场文书
幼儿园门卫安全责任书
2015/05/08 职场文书
民事申诉状范本
2015/05/20 职场文书
SpringCloud Function SpEL注入漏洞分析及环境搭建
2022/04/08 Java/Android