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 相关文章推荐
关于window.pageYOffset和document.documentElement.scrollTop
Apr 05 Javascript
Extjs中ComboBox加载并赋初值的实现方法
Mar 22 Javascript
将input file的选择的文件清空的两种解决方案
Oct 21 Javascript
jQuery性能优化的38个建议
Mar 04 Javascript
原生js和jquery实现图片轮播特效
Apr 23 Javascript
jQuery判断多个input file 都不能为空的例子
Jun 23 Javascript
jQuery入门基础知识学习指南
Aug 14 Javascript
jQuery 改变P标签文本值方法
Feb 24 jQuery
浅谈VUE监听窗口变化事件的问题
Feb 24 Javascript
浅谈vue方法内的方法使用this的问题
Sep 15 Javascript
vue中axios实现数据交互与跨域问题
May 12 Javascript
vue3.0 上手体验
Sep 21 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
德劲1103的维修打理经验
2021/03/02 无线电
php 错误处理经验分享
2011/10/11 PHP
php简单socket服务器客户端代码实例
2015/05/18 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
2016/11/25 PHP
详解如何在云服务器上部署Laravel
2017/06/30 PHP
JavaScript 编写匿名函数的几种方法
2010/02/21 Javascript
为Extjs加加速(javascript加速)
2010/08/19 Javascript
深入理解JavaScript定时机制
2010/10/29 Javascript
jquery()函数的三种语法介绍
2013/10/09 Javascript
JavaScript伸缩的菜单简单示例
2013/12/03 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
JavaScript位移运算符(无符号) &gt;&gt;&gt; 三个大于号 的使用方法详解
2016/03/31 Javascript
如何高效率去掉js数组中的重复项
2016/04/12 Javascript
jQuery实现导航滚动到指定内容效果完整实例【附demo源码下载】
2016/09/20 Javascript
简单理解vue中实例属性vm.$els
2016/12/01 Javascript
ionic2打包android时gradle无法下载的解决方法
2017/04/05 Javascript
js禁止浏览器的回退事件
2017/04/20 Javascript
详解VueJS 数据驱动和依赖追踪分析
2017/07/26 Javascript
Angular实现响应式表单
2017/08/04 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
2019/04/29 Javascript
vue 引用自定义ttf、otf、在线字体的方法
2019/05/09 Javascript
Python中实现参数类型检查的简单方法
2015/04/21 Python
pip matplotlib报错equired packages can not be built解决
2018/01/06 Python
python ddt实现数据驱动
2018/03/14 Python
Sanic框架基于类的视图用法示例
2018/07/18 Python
django-初始配置(纯手写)详解
2019/07/30 Python
Django项目之Elasticsearch搜索引擎的实例
2019/08/21 Python
python中format函数如何使用
2020/06/22 Python
Python中三维坐标空间绘制的实现
2020/09/22 Python
使用HTML5在网页中嵌入音频和视频播放的基本方法
2016/02/22 HTML / CSS
面向中国市场的在线海淘美妆零售网站:Beauty House美丽屋
2021/03/02 全球购物
公司中秋节活动方案
2014/02/12 职场文书
操行评语大全
2014/04/30 职场文书
2014年银行信贷员工作总结
2014/12/08 职场文书
交通事故和解协议书
2015/01/27 职场文书
python实现监听键盘
2021/04/26 Python