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 11 Javascript
基于jquery实现状态限定编辑的代码
Feb 11 Javascript
js中符号转意问题示例探讨
Aug 19 Javascript
使用CSS3的scale实现网页整体缩放
Mar 18 Javascript
初识SmartJS - AOP三剑客
Jun 08 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
Mar 08 Javascript
js内置对象处理_打印学生成绩单的简单实现
Sep 24 Javascript
vue better-scroll插件使用详解
Jan 25 Javascript
详解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on
Oct 12 Javascript
「中高级前端面试」JavaScript手写代码无敌秘籍(推荐)
Apr 08 Javascript
JavaScript随机数的组合问题案例分析
May 16 Javascript
javascript前端实现多视频上传
Dec 13 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/03 咖啡文化
php+ajax做仿百度搜索下拉自动提示框(有实例)
2012/08/21 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
2018/01/29 PHP
PHP的PDO预处理语句与存储过程
2019/01/27 PHP
JS之小练习代码
2008/10/12 Javascript
通过Javascript创建一个选择文件的对话框代码
2012/06/16 Javascript
Javascript中匿名函数的多种调用方式总结
2013/12/06 Javascript
jQuery类选择器用法实例
2014/12/23 Javascript
异步JavaScript编程中的Promise使用方法
2015/07/28 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
2016/09/03 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
js中scrollTop()方法和scroll()方法用法示例
2016/10/03 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
2016/12/28 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
2020/04/11 Javascript
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
[36:45]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python Web框架Flask中使用七牛云存储实例
2015/02/08 Python
Python中线程编程之threading模块的使用详解
2015/06/23 Python
通过数据库向Django模型添加字段的示例
2015/07/21 Python
利用python为运维人员写一个监控脚本
2018/03/25 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
对pyqt5中QTabWidget的相关操作详解
2019/06/21 Python
python 正则表达式参数替换实例详解
2020/01/17 Python
使用CSS3美化HTML表单的技巧演示
2016/05/17 HTML / CSS
卡塔尔航空官方网站:Qatar Airways
2017/02/08 全球购物
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
施华洛世奇美国官网:SWAROVSKI美国
2018/02/08 全球购物
NFL Game Pass欧洲:在线观看NFL比赛直播和点播,以高清质量播放
2018/08/30 全球购物
学期自我鉴定
2013/11/04 职场文书
毕业自我鉴定
2013/11/05 职场文书
内衣营销方案
2014/03/15 职场文书
档案接收函格式
2015/01/30 职场文书
php png失真的原因及解决办法
2021/11/17 PHP