基于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 相关文章推荐
escape、encodeURI、encodeURIComponent等方法的区别比较
Dec 27 Javascript
js 上传图片预览问题
Dec 06 Javascript
javascript插入样式实现代码
Feb 22 Javascript
jQuery中bind与live的用法及区别小结
Jan 27 Javascript
JavaScript返回当前会话cookie全部键值对照的方法
Apr 03 Javascript
JavaScript中push(),join() 函数 实例详解
Sep 06 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
Dec 13 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
Jul 21 Javascript
js 取消页面可以选中文字的功能方法
Jan 02 Javascript
jQuery实现动态显示select下拉列表数据的方法
Feb 05 jQuery
vue对storejs获取的数据进行处理时遇到的几种问题小结
Mar 20 Javascript
Jquery让form表单异步提交代码实现
Nov 14 jQuery
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
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
Yii框架引入coreseek分页功能示例
2019/02/08 PHP
跟着Jquery API学Jquery之一 选择器
2010/04/07 Javascript
JQuery上传插件Uploadify使用详解及错误处理
2010/04/27 Javascript
firebug的一个有趣现象介绍
2011/11/30 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
2015/09/01 Javascript
基于JS分页控件实现简单美观仿淘宝分页按钮效果
2016/11/07 Javascript
解决给dom元素绑定click等事件无效问题的方法
2017/02/17 Javascript
JavaScript闭包的简单应用
2017/09/01 Javascript
Vue2.0设置全局样式(less/sass和css)
2017/11/18 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
Angular2中监听数据更新的方法
2018/08/31 Javascript
Node+OCR实现图像文字识别功能
2018/11/26 Javascript
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
2019/04/28 Javascript
Vue中跨域及打包部署到nginx跨域设置方法
2019/08/26 Javascript
Node.js API详解之 querystring用法实例分析
2020/04/29 Javascript
[46:43]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第三局
2016/02/28 DOTA
[00:36]我的中国心——Serenity vs Fnatic
2018/08/21 DOTA
python mysqldb连接数据库
2009/03/16 Python
pycharm 主题theme设置调整仿sublime的方法
2018/05/23 Python
几款Python编译器比较与推荐(小结)
2020/10/15 Python
python3排序的实例方法
2020/10/20 Python
Html5游戏开发之乒乓Ping Pong游戏示例(二)
2013/01/21 HTML / CSS
德国狗狗用品在线商店:Schecker
2017/03/17 全球购物
中国首家奢侈品O2O网购平台:第五大道奢侈品网
2017/12/14 全球购物
UGG美国官网:购买UGG雪地靴、拖鞋和鞋子
2017/12/31 全球购物
印尼最大的网上书店:Gramedia.com
2018/09/13 全球购物
文明家庭先进事迹材
2014/01/27 职场文书
网络技术专业推荐信
2014/02/20 职场文书
《湘夫人》教学反思
2014/02/21 职场文书
师恩难忘教学反思
2014/04/27 职场文书
优秀班组事迹材料
2014/12/24 职场文书
检讨书范文
2015/01/27 职场文书
Springboot如何使用logback实现多环境配置?
2021/06/16 Java/Android
html粘性页脚的具体使用
2022/01/18 HTML / CSS
Python  序列化反序列化和异常处理的问题小结
2022/12/24 Python