小编最近在实现移动端列表页面显示的时候一直在思考如何实现列表的自动更新数据,对于大多数Native App或者Web App,在列表的底部增加“加载更多”的按钮也是解决这样的问题一种交互的方式,当然,这样的交互其实还好,不过根据用户的操作习惯来看,似乎滚动刷新更多数据和下拉刷新当前数据的操作方式,更符合用户对列表分页数据的读取习惯,因此,在这里小编想简单的说说,这次在小编系统中所使用的下拉刷新和滚动刷新的实现方式!

其实,这种实现数据加载的原理很简单
在滚动刷新的时候,需要在列表滚动到底部的时候,触发相应的回调函数,激发加载更多数据
在下拉刷新的时候,通过判断列表的用户手指离开的时候的偏移量,触发相应的回调函数,激发数据刷新
当然,在这里,为什么下拉列表的时候是激发数据刷新,在列表滚动到底部的时候激发加载更多数据,这既算是交互上的一种优化,也是一种用户习惯的约定俗成,一般用户在滚动列表的时候,希望的是看到更多的数据;当用户试图看到已经加载的数据的新的状态时,用户会偏向于下拉刷新这个列表,这在Native App亦或是Web app中都是大同小异的。
当然,这些都不过是js懒加载技术的不同实现方式。
那么,我们先来看下实现之后的效果,这也是小编目前在做的一款移动端的产品
首先,我们先看下,列表的滚动刷新,那么到底如何去判断列表已经滚动到了底部呢?
我们先看一个图,了解一些基本概念:
这里小编只列举了我们常用的界面高度和宽度元素,这其中:
clientHeight
内容可视区域的高度,也就是说页面浏览器可以看到内容的这个区域的高度,但要注意padding是算在内的
offsetHeight
在IE6,IE7,IE8以及最新的的FF, Chrome中,在元素上都是offsetHeight = clientHeight + 滚动条 + 边框
scrollHeight
这个属性就比较麻烦了,因为它们在火狐跟IE下简直差太多了..
在火狐下还很好理解,它其实就是滚动条可滚动的部分还要加上border的高度还要加上横向滚动条不可用的高度,与clientHeight比起来,多个border的高度跟横向滚动条不可用的高度.
在IE中 scrollHeight确是指这个对象它所包含的对象的高度加上boder的高度和marging,如果它里面没有包含对象或者这个对象的高度值未设置,那么它的值将为15
那么,在这里,我们会发现,当scrollTop + offsetHeight >= scrollHeight的时候,其实,我们的滚动条就已经到达最底部了,那么,滚动刷新触发的逻辑也就出来了,那么,这里会需要这样几个方法,来获取不同的高度元素
各个高度元素的方法有了,接下来,我们需要有一个方法去检查页面额滚动条是否已经到达了底部,那么,其实就是执行这个公式的计算逻辑
那,这里的loadDownFn就是我们的滚动刷新的方法,这个方法也是通过指令的方式传递到这个组件之中的,这点在接下来也会提到。
既然有了检查滚动条滚动位置的方法,那如何才能够激发这个方法在用户滚动列表的时候执行呢,那么,我们需要在列表滚动的时候,去激发检查方法的执行,其实这里就是对列表的scroll事件绑定了监听器。
那么,在这里,throttle是个限速器,防止滚动条滑懂到底部时多次激发刷新函数
因此我们的滚动刷新也就完成了,其实回头看看,毕竟JS实现的代码会有一些回调方法在里面,影响了我们通常的线性思维,但是我们可以发现,思路还是很清晰的,那接下来,我们看下下拉刷新的是如何实现的。
其实下拉刷新的触发逻辑也是很简单的,说白了,就是在用户手指接触屏幕的时候,捕获一下列表所在div的一个高度坐标,在用户手指脱离屏幕的时候再捕获一下列表所在div的一个高度坐标,做个差值判断一下用户的执行的动作是否是摁住该div的一个拉动动作(注意:不是滚动动作哦),从而判断是否应该激发我们的数据刷新方法。
那在这里,我们捕获用户的触屏操作,需要利用到H5的touch事件,这里,我们再翻开教科书看下,H5的touch事件都指的是什么?
触摸事件(touch)会在用户手指放在屏幕上面的时候、在屏幕上滑动的时候或者是从屏幕上移开的时候触发,这其中包括以下几个事件:
(on)touchstart:触摸开始的时候触发
(on)touchmove:手指在屏幕上滑动的时候触发
(on)touchend:触摸结束的时候触发
(on)touchcancel:系统取消touch事件的时候触发。例如电话接入或者弹出信息。一般用在游戏:玩着的时候,突然来电话了,就触发touchcancel事件暂停游戏、存档等操作。
那,在这里,小编主要用到了touchstart,touchmove和touchend这三个事件,分别用来捕获用户的触屏行为:
在touchmove里面,大家要注意,由于微信中的webview会存在黑底的问题,因此我们拉动列表的时候,会出现露出微信上方黑底的问题,因此,我们需要调用preventDefault方法,防止事件继续向上冒泡,从而防止用户在拖动列表的时候,微信上方出现黑底,那样会十分影响体验。
那接下来,我们需要做的就是把这些触摸事件绑定到滚动条上就行了:
那么,我们的下拉刷新的主要逻辑也就完成了
当然这里,我们也需要提供灵活的方式,能够动态的去绑定和解绑下拉刷新和滚动刷新的方法
最后,因为我们的控件没办法知道我们的数据已经加载完,因此我们需要提供一个方法,由外部的数据刷新方法调用结束后,通知我们的组件,数据已经加载完,并且重新渲染下拉处或者底部处的样式:
我们在组件中,也建议在vue的nextClick中对该方法进行调用:
这样,一个基本的下拉刷新和滚动刷新的指令也就实现了.
以上所述是小编给大家介绍的基于vue的下拉刷新指令和滚动刷新指令,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# vue下拉刷新
# vue滚动刷新指令
# Vue记住滚动条和实现下拉加载的完美方法
# vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
# vue 监听某个div垂直滚动条下拉到底部的方法
# vue使用mint-ui实现下拉刷新和无限滚动的示例代码
# vue实现ajax滚动下拉加载
# 同时具有loading效果(推荐)
# vue移动端下拉刷新和上滑加载
# vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
# vue实现下拉加载其实没那么复杂
# vueScroll实现移动端下拉刷新、上拉加载
# vue插件mescroll.js实现移动端上拉加载和下拉刷新
# 如何封装了一个vue移动端下拉加载下一页数据的组件
# Vue实现下拉滚动加载数据的示例
# 在这里
# 小编
# 滚动条
# 加载
# 也就
# 黑底
# 的是
# 都是
# 几个
# 回调
# 很简单
# 火狐
# 绑定
# 先看
# 屏幕上
# 不可用
# 如何实现
# 完成了
# 是个
# 很好
相关文章:
如何在Windows服务器上快速搭建网站?
红河网站制作公司,红河事业单位身份证如何上传?
如何通过VPS建站无需域名直接访问?
如何登录建站主机?访问步骤全解析
设计网站制作公司有哪些,制作网页教程?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
建站之星3.0如何解决常见操作问题?
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
php json中文编码为null的解决办法
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
C++时间戳转换成日期时间的步骤和示例代码
开源网站制作软件,开源网站什么意思?
建站之星导航菜单设置与功能模块配置全攻略
如何实现建站之星域名转发设置?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
如何在新浪SAE免费搭建个人博客?
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
相册网站制作软件,图片上的网址怎么复制?
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
如何选购建站域名与空间?自助平台全解析
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
想学网站制作怎么学,建立一个网站要花费多少?
建站之星图片链接生成指南:自助建站与智能设计教程
高防服务器租用如何选择配置与防御等级?
大连网站设计制作招聘信息,大连投诉网站有哪些?
海南网站制作公司有哪些,海口网是哪家的?
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
如何打造高效商业网站?建站目的决定转化率
*服务器网站为何频现安全漏洞?
ppt制作免费网站有哪些,ppt模板免费下载网站?
建站之星安装模板失败:服务器环境不兼容?
如何通过WDCP绑定主域名及创建子域名站点?
青岛网站建设如何选择本地服务器?
早安海报制作网站推荐大全,企业早安海报怎么每天更换?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
如何用VPS主机快速搭建个人网站?
如何通过VPS建站实现广告与增值服务盈利?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
建站之星后台搭建步骤解析:模板选择与产品管理实操指南
如何将凡科建站内容保存为本地文件?
建站之星后台管理:高效配置与模板优化提升用户体验
建站之星云端配置指南:模板选择与SEO优化一键生成
如何在阿里云完成域名注册与建站?
*请认真填写需求信息,我们会在24小时内与您取得联系。