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 相关文章推荐
Confirmer JQuery确认对话框组件
Jun 09 Javascript
Webkit的跨域安全问题说明
Sep 13 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
May 27 Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
Sep 07 Javascript
Jqgrid之强大的表格插件应用
Dec 02 Javascript
Bootstrap源码解读导航条(7)
Dec 23 Javascript
Bootstrap栅格系统的使用详解
Oct 30 Javascript
VUE2 前端实现 静态二级省市联动选择select的示例
Feb 09 Javascript
nginx部署访问vue-cli搭建的项目的方法
Feb 12 Javascript
详解如何在微信小程序中愉快地使用sass
Jul 30 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
Oct 31 Javascript
swiper自定义分页器的样式
Sep 14 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
虹吸壶是谁发明的?煮出来的咖啡好喝吗
2021/03/04 冲泡冲煮
PHP mb_convert_encoding 获取字符串编码类型实现代码
2009/04/26 PHP
PHP 抓取网页图片并且另存为的实现代码
2010/03/24 PHP
PHP5下$_SERVER变量不再受magic_quotes_gpc保护的弥补方法
2012/10/31 PHP
PHP工程师VIM配置分享
2015/12/15 PHP
PHP获取访问页面HTTP状态码的实现代码
2016/11/03 PHP
Laravel 修改默认日志文件名称和位置的例子
2019/10/17 PHP
JavaScript Chart 插件整理
2010/06/18 Javascript
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
修改js confirm alert 提示框文字的简单实例
2016/06/10 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
2016/08/27 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
2017/11/19 Javascript
JavaScript设计模式之缓存代理模式原理与简单用法示例
2018/08/07 Javascript
ajax跨域访问遇到的问题及解决方案
2019/05/23 Javascript
Vue 实现前进刷新后退不刷新的效果
2019/06/14 Javascript
JS常见面试试题总结【去重、遍历、闭包、继承等】
2019/08/27 Javascript
序列化模块json代码实例详解
2020/03/03 Javascript
微信小程序自定义顶部组件customHeader的示例代码
2020/06/03 Javascript
[29:23]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场1
2014/05/23 DOTA
python 切片和range()用法说明
2013/03/24 Python
python2.7读取文件夹下所有文件名称及内容的方法
2018/02/24 Python
python面向对象入门教程之从代码复用开始(一)
2018/12/11 Python
Python面向对象之类和对象属性的增删改查操作示例
2018/12/14 Python
canvas压缩图片以及卡片制作的方法示例
2018/12/04 HTML / CSS
美国香薰蜡烛品牌:PADDYWAX
2018/10/06 全球购物
高二生物教学反思
2014/01/27 职场文书
党支部活动策划方案
2014/08/18 职场文书
二人合伙经营协议书
2014/09/13 职场文书
党员活动总结
2015/02/04 职场文书
2015年个人思想总结
2015/03/09 职场文书
结婚司仪主持词
2015/06/29 职场文书
开学典礼致辞
2015/07/29 职场文书
小学数学国培研修日志
2015/11/13 职场文书
2016教师暑期培训学习心得体会
2016/01/09 职场文书
Python实现双向链表
2022/05/25 Python
spring IOC容器的Bean管理XML自动装配过程
2022/05/30 Java/Android