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 相关文章推荐
String.prototype实现的一些javascript函数介绍
Nov 22 Javascript
node.js中的path.isAbsolute方法使用说明
Dec 08 Javascript
Javascript中级语法快速入手
Jul 30 Javascript
Vue.js tab实现选项卡切换
May 16 Javascript
JavaScrip关于创建常量的知识点
Dec 07 Javascript
vue配置请求本地json数据的方法
Apr 11 Javascript
python实现迭代法求方程组的根过程解析
Nov 25 Javascript
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
Dec 21 Javascript
JS如何判断对象是否包含某个属性
Aug 29 Javascript
详细分析JavaScript中的深浅拷贝
Sep 17 Javascript
解决vue-pdf查看pdf文件及打印乱码的问题
Nov 04 Javascript
原生JS实现拖拽功能
Dec 16 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 CKEditor 上传图片实现代码
2009/11/06 PHP
PHP编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
php木马webshell扫描器代码
2012/01/25 PHP
php inc文件使用的风险和注意事项
2013/11/12 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
js的闭包的一个示例说明
2008/11/18 Javascript
Jquery在IE7下无法使用 $.ajax解决方法
2009/11/11 Javascript
Javascript this 的一些学习总结
2012/08/02 Javascript
异步动态加载js与css文件的js代码
2013/09/15 Javascript
js delete 用法(删除对象属性及变量)
2014/08/24 Javascript
jQuery中eq()方法用法实例
2015/01/05 Javascript
Augularjs-起步详解
2016/07/08 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
js文件中直接alert()中文出来的是乱码的解决方法
2016/11/01 Javascript
判断颜色是否合法的正则表达式(详解)
2017/05/03 Javascript
详解vue 数组和对象渲染问题
2018/09/21 Javascript
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
vue 导航内容设置选中状态样式的例子
2019/11/01 Javascript
详解小程序如何动态绑定点击的执行方法
2019/11/26 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
用 Python 爬了爬自己的微信朋友(实例讲解)
2017/08/25 Python
python实现用户答题功能
2018/01/17 Python
对python读取zip压缩文件里面的csv数据实例详解
2019/02/08 Python
Python之pymysql的使用小结
2019/07/01 Python
通过代码实例了解Python异常本质
2020/09/16 Python
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
群胜软件Java笔试题
2012/09/29 面试题
网络专业学生个人的自我评价
2013/12/16 职场文书
自荐信如何制作?
2014/02/21 职场文书
2015年护士医德医风自我评价
2015/03/03 职场文书
敬老院志愿者活动总结
2015/05/06 职场文书
地道战观后感400字
2015/06/04 职场文书
2015年暑假生活总结
2015/07/13 职场文书
2015年六年级班主任工作总结
2015/10/15 职场文书
高中政治教学反思
2016/02/23 职场文书
Python Flask请求扩展与中间件相关知识总结
2021/06/11 Python