微信小程序实现左右滑动进行切换数据页面(touchmove)

简介: 微信小程序实现左右滑动进行切换数据页面(touchmove)

💌目录

🚴场景

手指触摸左右滑动进行切换数据

需要实现的是有一个tab栏,点选某一个tab的时候切换页面,手势滑动,左滑右滑效果和点击tab一样切换页面数据。

🥇事件的属性方法

这里我们要先了解几个微信的事件属性

touchstart : 手指触摸动作开始

touchmove:手指触摸后移动

touchcancel:手指触摸动作被打断,如来电提醒,弹窗

touchend: 手指触摸动作结束

tap: 手指触摸后马上离开

longpress: 手指触摸后,超过350ms再离开,如果指定了事件回调函数并触发了这个事件,tap事件将不被触发

transitionend: 会在 WXSS transition 或 wx.createAnimation 动画结束后触发

animationstart:会在一个 WXSS animation 动画开始时触发

animationend: 会在一个 WXSS animation 动画完成时触发

从以上属性分析 我们需要完成 左右滑动的功能需要用到:

@touchmove、@touchstart、@touchend

🥈实战左右滑动

HTML

亿点小知识:当手指从屏幕上离开的时候触发 "capture" 用于事件捕获

<view
  @touchmove.capture="handleTouchmove"
  @touchstart.capture="handleTouchstart"
  @touchend.capture="handleTouchend"
  style="height:100vh"
>
</view>

js

先从手指开始 @touchstart 默认属性 event 中获取滑动的 pageX和pageY值

handleTouchstart(event) {
      this.flag = 0;
      this.lastX = event.changedTouches[0].pageX;
      this.lastY = event.changedTouches[0].pageY;
},

然后在判断 touchmove:手指触摸后移动中的距离

这里的 Math abs(x)方法返回指定值的绝对值。

返回值: Number x 的绝对值。如果 x 不是数字返回 NaN,如果 x 为 null 返回 0。

如果x = -2 那么返回值就是 2

handleTouchmove(event) {
      if (this.flag !== 0) {
        return;
      }
      let currentX = event.changedTouches[0].pageX;
      let currentY = event.changedTouches[0].pageY;
      let tx = currentX - this.lastX;
      let ty = currentY - this.lastY;
      //左右方向偏移大于上下偏移认为是左右滑动
      if (Math.abs(tx) - Math.abs(ty) > 5) {
        // 向左滑动
        if (tx < 0) {
          // 如果到最右侧
          console.log('向左滑动');
          this.flag = 1;
        // 向右滑动()
        } else if (tx > 0) {
          // 如果到最左侧
          this.flag = 2;
          console.log('向右滑动');
        }
      }
      //上下方向滑动
      else {
        if (ty < 0) {
          //向上滑动
          this.flag = 3;
        } else if (ty > 0) {
          //向下滑动
          this.flag = 4;
        }
      }
      //将当前坐标进行保存以进行下一次计算
      this.lastX = currentX;
      this.lastY = currentY;
  },

最后结束动作touchend

handleTouchend() {
      //停止滑动
      this.flag = 0;
    },

这里的this.flag 是用来记录是否需要重新滑动 不然会导致滑动过程中会一直触发touchmove

🥉

以上就是微信小程序实现左右滑动进行切换数据页面感谢大家的阅读

如碰到其他的问题 可以私下我 一起探讨学习

如果对你有所帮助还请 点赞 收藏谢谢~!

关注收藏博客 作者会持续更新…

相关文章
|
16天前
|
缓存 小程序 API
微信小程序页面导航与路由:实现多页面跳转与数据传递
本文深入探讨微信小程序的页面导航与路由机制,介绍多种页面跳转方式如`wx.navigateTo`、`wx.redirectTo`、`wx.switchTab`等,并讲解通过URL、全局变量和事件传递数据的方法。结合案例实现多页面跳转与数据传递,帮助开发者掌握这一重要技能。
|
16天前
|
缓存 小程序 API
微信小程序网络请求与API调用:实现数据交互
本文深入探讨了微信小程序的网络请求与API调用,涵盖`wx.request`的基本用法、常见场景(如获取数据、提交表单、上传和下载文件)及注意事项(如域名配置、HTTPS协议、超时设置和并发限制)。通过一个简单案例,演示了如何实现小程序与服务器的数据交互。掌握这些技能将帮助你构建功能更丰富的应用。
|
5月前
|
小程序 前端开发 开发者
小程序的页面如何布局?
【10月更文挑战第16天】小程序的页面如何布局?
253 1
|
5月前
|
小程序 JavaScript 开发工具
|
5月前
|
缓存 小程序 UED
如何利用小程序的生命周期函数实现数据的加载和更新?
如何利用小程序的生命周期函数实现数据的加载和更新?
148 4
|
5月前
|
移动开发 小程序 数据可视化
微信小程序可视化开发工具之动态数据
微信小程序可视化开发工具之动态数据
94 3
|
2月前
|
移动开发 小程序
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
54 0
|
4月前
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
97 0
在线课堂+工具组件小程序uniapp移动端源码
|
5月前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
666 3
|
5月前
|
小程序 API
微信小程序更新提醒uniapp
在小程序开发中,版本更新至关重要。本方案利用 `uni-app` 的 `uni.getUpdateManager()` API 在启动时检测版本更新,提示用户并提供立即更新选项,自动下载更新内容,并在更新完成后重启小程序以应用新版本。适用于微信小程序,确保用户始终使用最新版本。以下是实现步骤: ### 实现步骤 1. **创建更新方法**:在 `App.vue` 中创建 `updateApp` 方法用于检查小程序是否有新版本。 2. **测试**:添加编译模式并选择成功状态进行模拟测试。
113 0
微信小程序更新提醒uniapp

热门文章

最新文章