基于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实现幻灯片效果(基于jquery插件)
Nov 05 Javascript
node.js中的fs.statSync方法使用说明
Dec 16 Javascript
jQuery实现html表格动态添加新行的方法
May 28 Javascript
深入解析JavaScript中函数的Currying柯里化
Mar 19 Javascript
Javascript动画效果(4)
Oct 11 Javascript
Jquery on绑定的事件 触发多次实例代码
Dec 08 Javascript
Bootstrap的modal拖动效果
Dec 25 Javascript
浅析js实现网页截图的两种方式
Nov 01 Javascript
AngularJs的$http发送POST请求,php无法接收Post的数据问题及解决方案
Aug 13 Javascript
JavaScript交换变量常用4种方法解析
Sep 02 Javascript
JavaScript 常见的继承方式汇总
Sep 17 Javascript
解决vue打包报错Unexpected token: punc的问题
Oct 24 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
PHP 和 XML: 使用expat函数(一)
2006/10/09 PHP
基于empty函数的判断详解
2013/06/17 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
2016/03/21 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
php+mysql+jquery实现日历签到功能
2017/02/27 PHP
在Laravel的Model层做数据缓存的实现
2019/09/26 PHP
基于jquery的超简单上下翻
2010/04/20 Javascript
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
2010/07/24 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
2013/08/03 Javascript
JQuery文本改变触发事件如聚焦事件、失焦事件
2014/01/15 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
2015/06/04 Javascript
基于JavaScript FileReader上传图片显示本地链接
2016/05/27 Javascript
AngularJS中实现动画效果的方法
2016/07/28 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
vue中component组件的props使用详解
2017/09/04 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
2017/11/10 jQuery
JavaScript满天星导航栏实现方法
2018/03/08 Javascript
7个好用的JavaScript技巧分享(译)
2019/05/07 Javascript
Node登录权限验证token验证实现的方法示例
2020/05/25 Javascript
python使用in操作符时元组和数组的区别分析
2015/05/19 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
2017/12/21 Python
pytorch实现对输入超过三通道的数据进行训练
2020/01/15 Python
Python标准库itertools的使用方法
2020/01/17 Python
详解HTML5表单新增属性
2016/12/21 HTML / CSS
html2canvas生成清晰的图片实现打印的示例代码
2019/09/30 HTML / CSS
加拿大约会网站:EliteSingles.ca
2018/01/12 全球购物
Linden Leaves官网:新西兰纯净护肤品
2020/12/20 全球购物
公司董事长职责
2013/12/12 职场文书
高三毕业生自我鉴定
2013/12/20 职场文书
施工班组长岗位职责
2014/01/05 职场文书
《新型玻璃》教学反思
2014/04/13 职场文书
医院护士见习期自我鉴定
2014/09/15 职场文书
电信营业员岗位职责
2015/04/14 职场文书
观后感的写法
2015/06/19 职场文书
2016猴年开门红标语口号
2015/12/26 职场文书
学习杨善洲同志先进事迹心得体会
2016/01/23 职场文书