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 相关文章推荐
js实现的GridView即表头固定表体有滚动条且可滚动
Feb 19 Javascript
jQuery取得设置清空select选择的文本与值
Jul 08 Javascript
jQuery调取jSon数据并展示的方法
Jan 29 Javascript
js实现完全自定义可带多级目录的网页鼠标右键菜单方法
Feb 28 Javascript
12行javascript代码绘制一个八卦图
Apr 02 Javascript
基于JavaScript操作DOM常用的API小结
Dec 01 Javascript
JS常用字符串方法(推荐)
Jan 15 Javascript
jQuery1.9+中删除了live以后的替代方法
Jun 17 Javascript
D3.js实现直方图的方法详解
Sep 25 Javascript
swiper.js插件实现pc端文本上下滑动功能示例
Dec 03 Javascript
详解超简单的react服务器渲染(ssr)入坑指南
Feb 28 Javascript
Vue中全局变量的定义和使用
Jun 05 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入门
2006/10/09 PHP
PHP读取配置文件类实例(可读取ini,yaml,xml等)
2015/07/28 PHP
PHP+MySQL实现无极限分类栏目的方法
2015/12/23 PHP
PHP生成及获取JSON文件的方法
2016/08/23 PHP
PHP简单字符串过滤方法示例
2016/09/04 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
2018/05/12 PHP
PHP7中I/O模型内核剖析详解
2019/04/14 PHP
默认让页面的第一个控件选中的javascript代码
2009/12/26 Javascript
javascript与CSS复习(三)
2010/06/29 Javascript
JS小功能(button选择颜色)简单实例
2013/11/29 Javascript
jquery和js实现对div的隐藏和显示方法
2014/09/26 Javascript
node.js中的querystring.escape方法使用说明
2014/12/10 Javascript
JavaScript实现将UPC转换成ISBN的方法
2015/05/26 Javascript
JavaScript数据库TaffyDB用法实例分析
2015/07/27 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
2016/09/29 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
JS简单实现数组去重的方法示例
2017/03/27 Javascript
JS使用Date对象实时显示当前系统时间简单示例
2018/08/23 Javascript
详解Eslint 配置及规则说明
2018/09/10 Javascript
详解angularjs4部署文件过大解决过程
2018/12/05 Javascript
Vue.js 中的实用工具方法【推荐】
2019/07/04 Javascript
使用vuex较为优雅的实现一个购物车功能的示例代码
2019/12/09 Javascript
微信小程序实现吸顶特效
2020/01/08 Javascript
[02:41]DOTA2亚洲邀请赛小组赛第三日 赛事回顾
2015/02/01 DOTA
Python实现发送email的几种常用方法
2014/08/18 Python
python查询mysql中文乱码问题
2014/11/09 Python
python三方库之requests的快速上手
2019/03/04 Python
jupyter notebook 中输出pyecharts图实例
2020/04/23 Python
500行python代码实现飞机大战
2020/04/24 Python
深入理解Python变量的数据类型和存储
2021/02/01 Python
美国知名男士服饰品牌:Brooks Brothers(布克兄弟)
2016/08/25 全球购物
Cotton On美国网站:澳洲时装连锁品牌
2016/10/25 全球购物
会计求职自荐信
2014/06/20 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
python 单机五子棋对战游戏
2022/04/28 Python