vue2原生H5实现模拟下拉刷新效果实现

页面结构:

 <div ref="scrollContent"  class="scrollContent">
      <div>内容</div>
 </div>

样式:

<style>
.scrollContent {
 width: 100%;
 height: 100%;
 overflow-y: scroll;
}
</style>

js代码:

data () {
   isFinish: false // 实现下拉松手刷新的操作
},
mounted () {
            // 实现下拉查看历史消息
            const _this = this
            const container = document.querySelector('.scrollContent');
            const refreshThreshold = 80; // 下拉刷新阈值(持续下拉的阈值)
            const triggerThreshold = 40; // 触顶刷新阈值(滚动到顶部的阈值)
            let startY = 0;
            let isDragging = false;
            let isRefreshing = false;

            container.addEventListener('touchstart', function(e) {
              startY = e.touches[0].clientY;
              isRefreshing = false;
            });

            container.addEventListener('touchmove', function(e) {
              const currentY = e.touches[0].clientY;
              const distance = currentY - startY;

              if (distance > refreshThreshold && !isDragging && !isRefreshing) {
                isDragging = true;
                // 继续下拉一段距离后,执行下拉刷新操作
              }

              if (container.scrollTop === 0 && distance >= triggerThreshold && !isRefreshing) {
                isRefreshing = true;
                // 滚动到顶部且持续下拉一段距离后,执行下拉触顶刷新操作
                _this.isFinish = true
              }

              if (distance <= 0) {
                isDragging = false;
              }
            });

            container.addEventListener('touchend', function() {
              startY = 0;
              isDragging = false;
              // 下拉直到松手才允许进行获取历史记录的操作
              if (_this.isFinish) {
                //在这个地方写需要执行下拉触发的方法
                
              }
              _this.isFinish = false
            });
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值