下拉刷新原理

1、借助fixed定位 然后改变top做下拉移动效果

.home-container{
   
    position: fixed;
    top:100px;
    left:0;
    width:100%;
    overflow-y:auto;
    height: calc(100vh - 221px);
    background-color: #FFF;
}

2、核心代码,借助touchstart touchmove touchend 事件监听做处理

  • 一开始触发移动 就会执行 touchstart事件,记录当前的Y坐标 startY
  • 监听touchMove、touchEnd事件
  • 鼠标移动 实时记录鼠标Y坐标 ,pageY , pageY - startY就是移动的距离distance
    也就是最新的top值 是开始top再加鼠标移动距离: element.style.top = startTop + distance +‘px’
  • 松开手指 就要实现回弹效果, 会触发 touchend事件, 刚才如果移动超过30px 就会执行回调事件(刷新数据的事件)
  • requestAnimationFrame(_back); 就是做回弹的样式处理
  • currentTop - originalTop >=1 :当前距离大于 原始top距离 就频繁的-1处理, 再递归调用 requestAnimationFrame(_back);
  • 最后 currentTop - originalTop <1 说明到顶部了 就设置回原始top: element.style.top = originalTop +‘px’;// ease in
/**
 * 下拉刷新
 * @param element 元素
 * @param callback 回调
 */
export function downRefresh(element:HTMLElement,callback:Function){
   
   let startY:number;//开始的时候的纵坐标
   let distance:number;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值