Vue混入mixins滚动触底的方法


Posted in Javascript onNovember 22, 2019

前言

在app端常常看到类似加载数据的动画,接下来我们来实现滚动触底加载动画提示,以及如何复用这些逻辑。

Vue混入mixins滚动触底的方法

如何判断滚动触底

来看下几张图:

情况一:

当文档高度还为超过可视区域高度时,不存在滚动,所以也没有滚动触底

Vue混入mixins滚动触底的方法 

情况二:

当文档高度超过可视区域的高度时,还有剩余的文档没有滚动完,也就是说 可视区域高度 + 滚动高度 < 文档高度 ,此时没有达到滚动触底的条件

Vue混入mixins滚动触底的方法 

情况三:

文档高度大于可视区域,并且滚动到文档底部, 也就是说 可视区域高度 + 滚动高度 = 文档高度

Vue混入mixins滚动触底的方法 

判断是否滚动到底

经过上面三种情况的分析,我们需要拿到 可视区域的高度 , 滚动高度 , 文档高度 这三个变量来进行比较。

可视区域的高度

function getWindowHeight() {
 return document.documentElement.clientHeight;
}

滚动高度

对有doctype申明的页面使用document.documentElement.scrollTop,safari特例独行:使用 window.pageYOffset

function getScrollHeight() {
 return Math.max(document.documentElement.scrollTop,window.pageYOffset||0)
}

文档高度

function getDocumentTop() {
 return document.documentElement.offsetHeight;
}

代码实现

触底打印

最后

将滚动触底的逻辑和 UI 都集成到 scroll.js 中,复用都方式可以放在 mixins 可以抽离成 v-directive,这样我们可以接受到绑定的 dom 不仅仅可以做 window 的滚动触底事件的判断,也可以 实现单个元素的滚动事件触底的监听 。后续可以在实现 v-directive 的版本。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 继承机制的实现
Aug 12 Javascript
js function使用心得
May 10 Javascript
javascript调试说明
Jun 07 Javascript
关于js类的定义
Jun 28 Javascript
jQuery筛选器children()案例详解(图文)
Feb 17 Javascript
如何用JavaScript定义一个类
Sep 12 Javascript
JS实现FLASH幻灯片图片切换效果的方法
Mar 04 Javascript
javascript伸缩菜单栏实现代码分享
Nov 12 Javascript
node.js实现端口转发
Apr 14 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
Jul 01 Javascript
微信小程序中实现一对多发消息详解及实例代码
Feb 14 Javascript
浅谈vue+webpack项目调试方法步骤
Sep 11 Javascript
超简单的微信小程序轮播图
Nov 22 #Javascript
微信小程序实现Swiper轮播图效果
Nov 22 #Javascript
Js代码中的span拼接问题解决
Nov 22 #Javascript
微信小程序商品详情页底部弹出框
Nov 22 #Javascript
小程序实现图片预览裁剪插件
Nov 22 #Javascript
Vue数据双向绑定底层实现原理
Nov 22 #Javascript
Node如何后台数据库使用增删改查功能
Nov 21 #Javascript
You might like
php 保留字列表
2012/10/04 PHP
php实现Session存储到Redis
2015/11/11 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
图片动画横条广告带上下滚动可自定义图片、链接等等
2013/10/20 Javascript
简单时间提示DEMO从0开始一直进行计时
2013/11/19 Javascript
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
JavaScript原生对象之Number对象的属性和方法详解
2015/03/13 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
js原生跨域_用script标签的简单实现
2016/09/24 Javascript
react-router v4如何使用history控制路由跳转详解
2018/01/09 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
2018/03/20 jQuery
官方推荐react-navigation的具体使用详解
2018/05/08 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
2018/07/26 Javascript
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
从组件封装看Vue的作用域插槽的实现
2019/02/12 Javascript
vue实现路由切换改变title功能
2019/05/28 Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
2020/07/16 Javascript
jdk1.8+vue elementui实现多级菜单功能
2020/09/24 Javascript
python字符串连接的N种方式总结
2014/09/17 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
2016/05/25 Python
Python 文件操作的详解及实例
2017/09/18 Python
pandas修改DataFrame列名的方法
2018/04/08 Python
Python实现的各种常见分布算法示例
2018/12/13 Python
Python实例方法、类方法、静态方法的区别与作用详解
2019/03/25 Python
浅谈python 中类属性共享的问题
2019/07/02 Python
PYTHON发送邮件YAGMAIL的简单实现解析
2019/10/28 Python
python tornado修改log输出方式
2019/11/18 Python
大学四年职业生涯规划书范文
2014/01/02 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
2014年教育实习工作总结
2014/11/22 职场文书
解除劳动关系协议书2篇
2014/11/28 职场文书
小学2016年第十八届推普周活动总结
2016/04/05 职场文书
正确使用MySQL update语句
2021/05/26 MySQL
使用RedisTemplat实现简单的分布式锁
2021/11/20 Redis
Win11 BitLocker 驱动器加密
2022/04/19 数码科技
Tomcat starup.bat 脚本实现开机自启动
2022/04/20 Servers