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 相关文章推荐
基于jquery实现发送文章到手机的代码
Dec 26 Javascript
angular.js之路由的选择方法
Sep 24 Javascript
利用NPM淘宝的node.js镜像加速nvm
Mar 27 Javascript
easyui关于validatebox实现多重规则验证的方法(必看)
Apr 12 Javascript
详解通过JSON数据使用VUE.JS
May 26 Javascript
详解vue组件通信的三种方式
Jun 30 Javascript
原生JS与jQuery编写简单选项卡
Oct 30 jQuery
解决iView中时间控件选择的时间总是少一天的问题
Mar 15 Javascript
Vue-cli3项目配置Vue.config.js实战记录
Jul 29 Javascript
vue.js 2.*项目环境搭建、运行、打包发布的详细步骤
May 01 Javascript
VUE接入腾讯验证码功能(滑块验证)备忘
May 07 Javascript
ElementUI Tag组件实现多标签生成的方法示例
Jul 08 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连接MySQL数据的操作要点
2015/03/20 PHP
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
高亮显示web页表格行的javascript代码
2010/11/19 Javascript
原生js实现半透明遮罩层效果具体代码
2013/06/06 Javascript
解决Jquery鼠标经过不停滑动的问题
2014/03/03 Javascript
jquery仿搜索自动联想功能代码
2014/05/23 Javascript
JavaScript替换当前页面的方法
2015/04/03 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
js实现跨域的4种实用方法原理分析
2015/10/29 Javascript
Javascript的表单验证-初识正则表达式
2016/03/18 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
javascript数据类型详解
2017/02/07 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
js 开发之autocomplete=&quot;off&quot;在chrom中失效的解决办法
2017/09/28 Javascript
十分钟带你快速了解React16新特性
2017/11/10 Javascript
讲解vue-router之命名路由和命名视图
2018/05/28 Javascript
Webpack中loader打包各种文件的方法实例
2019/09/03 Javascript
浅析js实现网页截图的两种方式
2019/11/01 Javascript
vue项目开启Gzip压缩和性能优化操作
2020/10/26 Javascript
Win10下Python环境搭建与配置教程
2016/11/18 Python
python实现一个简单的udp通信的示例代码
2019/02/01 Python
python修改FTP服务器上的文件名
2019/09/11 Python
Python基础之高级变量类型实例详解
2020/01/03 Python
利用 Python ElementTree 生成 xml的实例
2020/03/06 Python
Pycharm及python安装详细教程(图解)
2020/07/31 Python
Python基于tkinter canvas实现图片裁剪功能
2020/11/05 Python
Saks Fifth Avenue澳洲/亚太地区:萨克斯第五大道精品百货店
2019/06/09 全球购物
韩语专业本科生求职信
2013/10/01 职场文书
总裁秘书岗位职责
2013/12/04 职场文书
贺卡寄语大全
2014/04/11 职场文书
在职党员进社区活动总结
2014/07/05 职场文书
2016年国庆节假期旅游工作总结
2016/04/01 职场文书
JavaScript 去重和重复次数统计
2021/03/31 Javascript
eclipse创建项目没有dynamic web的解决方法
2021/06/24 Java/Android
解决Git推送错误non-fast-forward的方法
2022/06/25 Servers