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 面向对象的之私有成员和公开成员
May 04 Javascript
js过滤数组重复元素的方法
Sep 05 Javascript
JavaScript 代码压缩工具小结
Feb 27 Javascript
javascript学习笔记(十五) js间歇调用和超时调用
Jun 20 Javascript
jquery自定义函数的多种方法
Jan 09 Javascript
js取得html iframe中的元素和变量值
Jun 30 Javascript
Jquery数字上下滚动动态切换插件
Aug 08 Javascript
浅谈$('div a') 与$('div&gt;a')的区别
Jul 18 Javascript
纯js实现画一棵树的示例
Sep 05 Javascript
vue增加强缓存和版本号的实现方法
May 01 Javascript
jQuery HTML css()方法与css类实例详解
May 20 jQuery
JS+JQuery实现无缝连接轮播图
Dec 30 jQuery
超简单的微信小程序轮播图
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作的文本留言本的例子(一)
2006/10/09 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
2014/11/12 PHP
php实现的RSS生成类实例
2015/04/23 PHP
thinkphp5.1框架容器与依赖注入实例分析
2019/07/23 PHP
Javascript实例教程(19) 使用HoTMetal(5)
2006/12/23 Javascript
jQuery表格行换色的三种实现方法
2011/06/27 Javascript
IE与FireFox的JavaScript兼容问题解决办法
2013/12/31 Javascript
使用node.js 获取客户端信息代码分享
2014/11/26 Javascript
javascript中typeof操作符和constucor属性检测
2015/02/26 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
jQuery实现购物车表单自动结算效果实例
2015/08/10 Javascript
jQuery中的一些常见方法小结(推荐)
2016/06/13 Javascript
简单实现JS计算器功能
2016/12/21 Javascript
20行js代码实现的贪吃蛇小游戏
2017/06/20 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
2018/12/05 Javascript
OpenLayers3实现测量功能
2020/09/25 Javascript
vuejs实现下拉框菜单选择
2020/10/23 Javascript
[01:38:19]夜魇凡尔赛茶话会 第五期
2021/03/11 DOTA
Python使用回溯法子集树模板解决迷宫问题示例
2017/09/01 Python
python 三种方法提取pdf中的图片
2021/02/07 Python
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
德国电子产品购物网站:TechInTheBasket德国
2018/12/07 全球购物
哄娃神器4moms商店:美国婴童用品品牌
2019/03/07 全球购物
意大利网上购书网站:Libraccio.it
2021/02/03 全球购物
职业生涯规划设计步骤
2014/01/12 职场文书
人力资源主管岗位职责
2014/01/29 职场文书
趣味游戏活动方案
2014/02/07 职场文书
优秀应届毕业生推荐信
2014/02/18 职场文书
学校做一个有道德的人活动方案
2014/08/23 职场文书
党支部先进事迹材料
2014/12/24 职场文书
工作试用期自我评价
2015/03/10 职场文书
2015年个人招商工作总结
2015/04/25 职场文书
css3应用示例:新增的选择器
2022/03/16 HTML / CSS
Ruby GDBM操作简介及数据存储原理
2022/04/19 Ruby