当前位置: 首页 > article >正文

移动端可互动轮播图

首先通过事件监听获得到初始滑动位置,并关闭掉轮播图的自动轮播定时器

//设置事件代理
$(".slider").on("touchstart", function (e) {
  // 当滑动触发的时候关闭定时器
  clearInterval(time);

  // 开始时的px
  startX = e.touches[0].clientX;
});

然后通过事件监听,获得滑动停止的位置,同时打开节流阀,防止短时间内多次滑动导致出现问题,先获得到停止的位置,然后判断滑动距离是否超过一定的值,超过判断为用户滑动,然后判断正负,正值向下一张滑动,负值向上一张滑动,在内里调用自动轮播函数即可,随后重新启动定时器,确保用户滑动完一次松手以后,轮播图的自动轮播可以重新启动,最后在所有语句执行完成以后,过一秒,关闭节流阀

$(".slider").on("touchend", function (e) {
  // 判断是否开启节流阀
  if (silider_switch == true) {
    return;
  }
  // 开启节流阀
  silider_switch = true;
  // 结束时的px
  endX = e.changedTouches[0].clientX;
  // 计算移动的px
  let move = startX - endX;
  // 判断用户滑动的距离,避免用户误触
  if (move > 60 || move < -60) {
    if (move > 0) {
      // 执行从左向右滑动
      auto_next();

      time = setInterval(auto_next, 2000);
      changeSlide(index);
    } else {
      // 执行从右向左滑动
      auto_next_prev();

      time = setInterval(auto_next, 2000);
      changeSlide(index);
    }
  }
  console.log(silider_switch);

  setTimeout(function () {
    // 1秒以后关闭节流阀
    silider_switch = false;
  }, 1000);
});


http://www.kler.cn/a/481879.html

相关文章:

  • 测试覆盖率
  • docker+ffmpeg+nginx+rtmp 拉取摄像机视频
  • 使用 uniapp 开发微信小程序遇到的坑
  • 个人博客搭建(二)—Typora+PicGo+OSS
  • c++ 17 constexpr
  • 【Vue】:解决动态更新 <video> 标签 src 属性后视频未刷新的问题
  • VoiceBox:基于文本引导的多语种通用大规模语音生成
  • CSS学习记录26
  • 32单片机从入门到精通之软件编程——任务调度(十)
  • 对话新晋 Apache SeaTunnel Committer:张圣航的开源之路与技术洞察
  • Maven核心插件之maven-resources-plugin
  • 如何训练大型语言模型?
  • Java学习,Finally用法
  • BigDecimal:高精度数值运算类
  • 深度学习算法:开启智能时代的钥匙
  • Mysql快速列出来所有列信息
  • http
  • 建立时间和保持时间
  • CANopen 学习笔记(1)
  • selenium学习笔记
  • MapReduce完整工作流程
  • Flutter Xcode 16+ iOS 18.1 使用image_pickers无法弹出选择图片的视图问题
  • C语言凯撒密码程序分享
  • 上海亚商投顾:沪指探底回升微涨 机器人概念股午后爆发
  • 二、模型训练与优化(4):模型优化-实操
  • ip属地出省会变吗?怎么出省让ip属地不变