博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于Vue手写一个下拉刷新
阅读量:6086 次
发布时间:2019-06-20

本文共 930 字,大约阅读时间需要 3 分钟。

当然不乏有很多下拉刷新的插件可以直接使用,但是自定义程度不强,大部分都只能改改文字,很难满足设计师的创意,譬如淘宝和京东首页那种效果,就需要自己花心思倒腾了,最近刚好有这种需求,做完了稍微总结一下,具体看源码即可。

思路

  1. touchstart 记录开始位置
  2. touchmove 判断上拉、下拉(暂时只用到了下拉)
  3. touchend 根据下拉、上拉位置判断是否达到下拉刷新、上拉加载更多
  4. @scroll.passive="onScrollFn($event)" 记录屏幕滚动,用来处理上滑时header rgba控制(沿用早期效果)
  5. touchmove 会触发onPulling,控制下拉时header opacity(参考目前淘宝效果)
  6. 正在刷新时触发refresh,此时有一个回弹效果
  7. 刷新完不管成功失败都有一个回调 refreshFinsh,作用是有时候没有拉到刷新区域页面回弹之后,相关的透明度可能无法还原

props

  1. offset 默认下拉高度
  2. bounce 回弹高度 offset - bounce
  3. maxScrollerHeight 最大下拉高度
  4. enableRefresh 是否开启刷新
  5. onRefresh 达到刷新条件调用的方法
  6. refreshFinsh 刷新完成后回调
  7. onScroll 向上滑动中回调
  8. onPulling 向下 下拉刷新中回调
  9. frequency 频率控制
  10. power 滑动和下拉的像素比例(使之更易拉动)

使用示例

......

使用案例

  1. 源码参考地址
  2. demo参考地址

注意事项

  1. ios touchmove移出屏幕可能不会触发touchend,可用touchcancel
  2. ios最外层容器默认是可以滚动的,未达到刷新条件的时候需要e.preventDefault()

存在问题

  1. 添加频率限制后,出现滑动完需等待一会才能继续滑动,这里的滑动未区分普通滑动/下拉/上拉
  2. 上拉加载更多TODO
  3. touchmove 没有使用节流函数

转载于:https://www.cnblogs.com/liliangel/p/10191690.html

你可能感兴趣的文章
c#正则表达式
查看>>
hive join详解
查看>>
MySQL内存使用-线程独享
查看>>
C++ Primer Plus 读书笔记(第3章)
查看>>
云中漫步 - 2:使用 VS2012 与 Windows Azure Web 站点创建并发布 ASP.NET Web 应用程序...
查看>>
Nginx学习笔记(二) Nginx--connection&request
查看>>
实战ffs函数
查看>>
Web 开发人员不能错过的 jQuery 教程和案例
查看>>
信号之可靠信号术语和语义
查看>>
使用CocoaPods来做iOS程序的包依赖管理
查看>>
Ogre分层渲染 (转)
查看>>
char*和char []
查看>>
我的MYSQL学习心得(五) 运算符
查看>>
HipHop的原理
查看>>
Spring Quartz结合Spring mail定期发送邮件
查看>>
【148】DevExpress相关控件使用
查看>>
SQL Server 动态生成数据库所有表Insert语句
查看>>
java简单统计.java文件中的有效代码行,空行,注释行
查看>>
黄聪:C#里如何使用WebBrowser获取处理AJAX生成的网页内容?
查看>>
如何判断一个DOM元素正在动画,一个CSS“阻塞”JS的例子
查看>>