微信小程序左右滑动切换页面详解及实例代码

发布时间 - 2026-01-10 23:20:26    点击率:

微信小程序——左右滑动切换页面事件

微信小程序的左右滑动触屏事件,主要有三个事件:touchstart,touchmove,touchend。

这三个事件最重要的属性是pageX和pageY,表示X,Y坐标。

touchstart在触摸开始时触发事件;
touchend在触摸结束时触发事件;
touchmove触摸的过程中不断激发这个事件;

这三个事件都有一个timeStamp的属性,查看timeStamp属性,可以看到顺序是touchstart => touchmove=> touchmove => ··· =>touchmove =>touchend。

第一步:在wxml文件中绑定事件(需要左右滑动的界面)

<view class="container" bindtouchstart="touchStart" bindtouchmove="touchMove" bindtouchend="touchEnd">
 // do something
</view>

第二步:在js文件中处理左右滑动逻辑

var touchDot = 0;//触摸时的原点
var time = 0;// 时间记录,用于滑动时且时间小于1s则执行左右滑动
var interval = "";// 记录/清理 时间记录
var nth = 0;// 设置活动菜单的index
var nthMax = 5;//活动菜单的最大个数
var tmpFlag = true;// 判断左右华东超出菜单最大值时不再执行滑动事件

// 触摸开始事件
touchStart:function(e){ 
  touchDot = e.touches[0].pageX; // 获取触摸时的原点
  // 使用js计时器记录时间  
  interval = setInterval(function(){
    time++;
  },100); 
},
// 触摸移动事件
touchMove:function(e){ 
  var touchMove = e.touches[0].pageX;
  console.log("touchMove:"+touchMove+" touchDot:"+touchDot+" diff:"+(touchMove - touchDot));
  // 向左滑动  
  if(touchMove - touchDot <= -40 && time < 10){
    if(tmpFlag && nth < nthMax){ //每次移动中且滑动时不超过最大值 只执行一次
      var tmp = this.data.menu.map(function (arr, index) {
        tmpFlag = false;
        if(arr.active){ // 当前的状态更改
          nth = index;
          ++nth;
          arr.active = nth > nthMax ? true : false;
        }
        if(nth == index){ // 下一个的状态更改
          arr.active = true;
          name = arr.value;
        }
        return arr;
      })
      this.getNews(name); // 获取新闻列表
      this.setData({menu : tmp}); // 更新菜单
    }
  }
  // 向右滑动
  if(touchMove - touchDot >= 40 && time < 10){
    if(tmpFlag && nth > 0){
      nth = --nth < 0 ? 0 : nth;
      var tmp = this.data.menu.map(function (arr, index) {
        tmpFlag = false;
        arr.active = false;
        // 上一个的状态更改
        if(nth == index){
          arr.active = true;
          name = arr.value;
        }
        return arr;
      })
      this.getNews(name); // 获取新闻列表
      this.setData({menu : tmp}); // 更新菜单
    }
  }
  // touchDot = touchMove; //每移动一次把上一次的点作为原点(好像没啥用)
},
 // 触摸结束事件
touchEnd:function(e){
  clearInterval(interval); // 清除setInterval
  time = 0;
  tmpFlag = true; // 回复滑动事件
},

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# 微信小程序左右滑动切换页面事件  # 小程序  # 滑动切换页面  # 微信小程序滑动页面  # 微信小程序MUI侧滑导航菜单示例(Popup弹出式  # 左侧滑动  # 右侧不动)  # 左侧不动  # 右侧滑动)  # 微信小程序左滑动显示菜单功能的实现  # 微信小程序图片横向左右滑动案例  # 微信小程序侧边栏滑动特效(左右滑动)  # 微信小程序左右滑动的实现代码  # 微信小程序 向左滑动删除功能的实现  # 微信小程序滚动Tab实现左右可滑动切换  # 微信小程序实现左侧滑动导航栏  # 微信小程序实现点餐小程序左侧滑动菜单  # 这三个  # 都有  # 最重要  # 计时器  # 希望能  # 可以看到  # 不超过  # 谢谢大家  # 第二步  # 绑定  # 结束时  # 没啥  # 过程中  # 主要有  # xml  # brush  # container  # lt  # view  # bindtouchend 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么为数据库表字段添加索引以优化查询  Laravel集合Collection怎么用_Laravel集合常用函数详解  Swift中循环语句中的转移语句 break 和 continue  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  WordPress 子目录安装中正确处理脚本路径的完整指南  制作企业网站建设方案,怎样建设一个公司网站?  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  中国移动官方网站首页入口 中国移动官网网页登录  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  中山网站推广排名,中山信息港登录入口?  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  JS碰撞运动实现方法详解  太平洋网站制作公司,网络用语太平洋是什么意思?  如何用VPS主机快速搭建个人网站?  用v-html解决Vue.js渲染中html标签不被解析的问题  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  实例解析Array和String方法  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  如何快速搭建高效简练网站?  奇安信“盘古石”团队突破 iOS 26.1 提权  Python自动化办公教程_ExcelWordPDF批量处理案例  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  打造顶配客厅影院,这份100寸电视推荐名单请查收  如何用AWS免费套餐快速搭建高效网站?  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  如何在建站宝盒中设置产品搜索功能?  java获取注册ip实例  南京网站制作费用,南京远驱官方网站?  bootstrap日历插件datetimepicker使用方法  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  C++时间戳转换成日期时间的步骤和示例代码  Laravel如何处理文件下载请求?(Response示例)  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  🚀拖拽式CMS建站能否实现高效与个性化并存?  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  Android利用动画实现背景逐渐变暗  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  如何快速搭建高效可靠的建站解决方案?  如何快速启动建站代理加盟业务?  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  个人摄影网站制作流程,摄影爱好者都去什么网站?  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载