基于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 相关文章推荐
jQuery 1.2.x 升? 1.3.x 注意事项
May 06 Javascript
JavaScript 语法集锦 脚本之家基础推荐
Nov 15 Javascript
浅谈JavaScript编程语言的编码规范
Oct 21 Javascript
使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)
Mar 16 Javascript
js插件dropload上拉下滑加载数据实例解析
Jul 27 Javascript
JS实现登录页密码的显示和隐藏功能
Dec 06 Javascript
详解Node.js中的Async和Await函数
Feb 22 Javascript
纯JS实现出生日期[年月日]下拉菜单效果
Jun 01 Javascript
js canvas实现红包照片效果
Aug 21 Javascript
微信小程序与后台PHP交互的方法实例分析
Dec 10 Javascript
koa router 多文件引入的方法示例
May 22 Javascript
Vue实现省市区三级联动
Dec 27 Vue.js
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缓存技术介绍
2006/11/25 PHP
php 操作数组(合并,拆分,追加,查找,删除等)
2012/07/20 PHP
PHP中如何调用webservice的实例参考
2013/04/25 PHP
php 注册时输入信息验证器的实现详解
2013/07/05 PHP
ThinkPHP之M方法实例详解
2014/06/20 PHP
PHP SPL标准库之数据结构栈(SplStack)介绍
2015/05/12 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
laravel 解决多库下的DB::transaction()事务失效问题
2019/10/21 PHP
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
jQuery学习笔记之 Ajax操作篇(二) - 数据传递
2014/06/23 Javascript
js确认删除对话框适用于a标签及submit
2014/07/10 Javascript
JavaScript中判断整数的多种方法总结
2014/11/08 Javascript
js实现表单检测及表单提示的方法
2015/08/14 Javascript
javascript插件开发的一些感想和心得
2016/02/28 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
Node.js中package.json中库的版本号(~和^)
2019/04/02 Javascript
vue-router 中 meta的用法详解
2019/11/01 Javascript
Vue组件模板的几种书写形式(3种)
2020/02/19 Javascript
python处理json数据中的中文
2014/03/06 Python
Python下载懒人图库JavaScript特效
2015/05/28 Python
python在非root权限下的安装方法
2018/01/23 Python
python3 遍历删除特定后缀名文件的方法
2018/04/23 Python
selenium+python实现自动化登录的方法
2018/09/04 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
2019/02/22 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
2019/06/28 Python
python绘制分布折线图的示例
2020/09/24 Python
Python实现曲线拟合的最小二乘法
2021/02/19 Python
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
护士自我鉴定
2013/10/23 职场文书
机修工岗位职责
2013/11/24 职场文书
优秀经理事迹材料
2014/02/01 职场文书
2015中秋节晚会主持词
2015/07/01 职场文书
MySQL大小写敏感的注意事项
2021/05/24 MySQL
springboot 全局异常处理和统一响应对象的处理方式
2022/06/28 Java/Android
Spring Boot优化后启动速度快到飞起技巧示例
2022/07/23 Java/Android