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 相关文章推荐
Dom加载让图片加载完再执行的脚本代码
May 15 Javascript
ppk谈JavaScript style属性
Oct 10 Javascript
图片翻转效果具体实现代码
Jan 09 Javascript
jquery实现类似淘宝星星评分功能实例
Sep 12 Javascript
浅谈JavaScript事件的属性列表
Mar 01 Javascript
原生js实现数字字母混合验证码的简单实例
Dec 10 Javascript
AngularJS控制器详解及示例代码
Aug 16 Javascript
JavaScript制作弹出层效果
Dec 02 Javascript
Vue.js实现移动端短信验证码功能
Mar 29 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
Jul 13 Javascript
javascript数组定义的几种方法
Oct 06 Javascript
基于vue+echarts数据可视化大屏展示的实现
Dec 25 Vue.js
超简单的微信小程序轮播图
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函数
2008/10/03 PHP
PHP中限制IP段访问、禁止IP提交表单的代码
2011/04/23 PHP
php程序内部post数据的方法
2015/03/31 PHP
PHP面相对象中的重载与重写
2017/02/13 PHP
ThinkPHP中调用PHPExcel的实现代码
2017/04/08 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
PHP实现读取文件夹及批量重命名文件操作示例
2019/04/15 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
jQuery EasyUI API 中文文档 - ValidateBox验证框
2011/10/06 Javascript
JS控制弹出悬浮窗口(一览画面)的实例代码
2016/05/30 Javascript
js判断价格,必须为数字且不能为负数的实现方法
2016/10/07 Javascript
基于react框架使用的一些细节要点的思考
2017/05/31 Javascript
基于canvas粒子系统的构建详解
2017/08/31 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
2018/07/25 Javascript
简单实现vue中的依赖收集与响应的方法
2019/02/18 Javascript
微信小程序中的video视频实现 自定义播放按钮、封面图、视频封面上文案
2020/01/02 Javascript
vue使用Sass时报错问题的解决方法
2020/10/14 Javascript
根据DataFrame某一列的值来选择具体的某一行方法
2018/07/03 Python
python生成1行四列全2矩阵的方法
2018/08/04 Python
python tkinter组件使用详解
2019/09/16 Python
Python根据服务获取端口号的方法
2019/09/25 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
python爬虫scrapy图书分类实例讲解
2020/11/23 Python
波兰家居和花园家具专家:4Home
2019/05/26 全球购物
机修工岗位职责
2013/11/24 职场文书
学生喝酒检讨书
2014/02/06 职场文书
实习公司领导推荐函
2014/05/21 职场文书
2014年计生标语
2014/06/23 职场文书
幼儿园小班个人工作总结
2015/02/12 职场文书
2015年乡镇发展党员工作总结
2015/03/31 职场文书
开会通知短信大全
2015/04/20 职场文书
小学毕业感言200字
2015/07/30 职场文书
2016年“5.12”护士节致辞
2015/07/31 职场文书
Win11安装受阻怎么办? Windows11安装问题与解决方案汇总
2021/11/21 数码科技
Windows下载并安装MySQL8.0.x 版本的完整教程
2022/04/10 MySQL