前端处理ios 安卓移动端 页面出现无法滑动问题

或是用手划到最顶端和最底端容易出现,又或是其他操作导致,页面卡住 无法滑动,解决如下

给需要滑动的盒子添加监听事件,要是滑动到最顶部 或者最顶部 就阻止默认事件触发页面滑动

// 处理页面卡顿无法滑动
    const layerBox = this.lv;
    var targetY = null;
    layerBox.addEventListener('touchstart', function(e) {
      //clientY-客户区坐标Y 、pageY-页面坐标Y
      targetY = Math.floor(e.targetTouches[0].clientY);
    });
    layerBox.addEventListener(
      'touchmove',
      function(e) {
        // 检测可滚动区域的滚动事件,如果滑到了顶部或底部,阻止默认事件
        var NewTargetY = Math.floor(e.targetTouches[0].clientY), //本次移动时鼠标的位置,用于计算
          sTop = layerBox.scrollTop, //当前滚动的距离
          sH = layerBox.scrollHeight, //可滚动区域的高度
          lyBoxH = layerBox.clientHeight; //可视区域的高度
        if (sTop <= 0 && NewTargetY - targetY > 0 && '鼠标方向向下-到顶') {
          // console.log('条件1成立:下拉页面到顶');
          e.preventDefault();
        } else if (sTop >= sH - lyBoxH && NewTargetY - targetY < 0 && '鼠标方向向上-到底') {
          // console.log('条件2成立:上翻页面到底');
          e.preventDefault();
        }
      },
      false,
    );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值