uniapp封装手势滑动屏幕核心代码(向左滑,向右滑)

文前推荐一下👉前端必备工具推荐网站(图床、API和ChatAI、智能AI简历、AI思维导图神器等实用工具):
站点入口:http://luckycola.com.cn/
图床:https://luckycola.com.cn/public/dist/#/imghub
多种API:https://luckycola.com.cn/public/dist/#/
ChatAI:https://luckycola.com.cn/public/dist/#/chatAi
AI思维导图神器:https://luckycola.com.cn/public/dist/#/aiQStore/aiMindPage

前言:uniapp官方没有提供左滑右滑的事件,但是像探探app那样左滑右滑是怎样实现的呢,本篇就来说一下怎样封装一个uniapp左滑右滑事件

在这里插入图片描述

核心思路

  1. 给容器绑定两个触屏事件touchstart(用户按下)和touchend(用户离开)
  2. 用户按下屏幕事件
    a.记录用户按下屏幕的时间 Date.now() 时间戳,即返回1970-1-1到现在的毫秒数
    b.记录用户按下屏幕的坐标X和Y
  3. 用户离开屏幕事件
    a.记录用户离开屏幕的时间 Date.now()
    b. 记录用户离开屏幕的坐标 x和y
    c. 根据两个时间 运算,判断用户按下的屏幕时长是否合法
    d. 根据两对坐标判断距离是否合法,判断滑动方向

实现步骤

1. 给容器绑定两个触屏事件
<template>
 <view @touchstart="handleTouchstart" @touchend="handleTouchend"> </view>
</template>

<script>
export default {
 data() {
   return {
   };
 },
 methods: {
   /*用户按下屏幕
     1.记录用户按下屏幕的时间  Date.now() 时间戳 返回 1970-1-1到现在的毫秒数
     2.记录用户按下屏幕的坐标x和y
   */
   handleTouchstart(e) {
  console.log(e);
      },
   handleTouchend(e) {
  console.log(e);
},
 },
};
</script>

<style>
view {
 width: 100%;
 height: 500rpx;
 background-color: aqua;
}
</style>

2.用户按下屏幕事件,记录
<script>
export default {
 data() {
   return {
     //按下的时间
     startTime: 0,
     //按下的坐标
     startX: 0,
     startY: 0,
   };
 },
 methods: {
   /*用户按下屏幕
     1.记录用户按下屏幕的时间  Date.now() 时间戳 返回 1970-1-1到现在的毫秒数
     2.记录用户按下屏幕的坐标x和y
   */
   handleTouchstart(e) {
     //记录用户按下的时间
     this.startTime = Date.now();
     //记录用户按下的坐标
     this.startX = e.changedTouches[0].clientX;
     this.startY = e.changedTouches[0].clientY;

     console.log(this.startX);
     console.log(this.startY);
   },
   handleTouchend(e) {},
 },
};
</script>
3.用户离开屏幕事件

<script>
export default {
 data() {
   return {
     //按下的时间
     startTime: 0,
     //按下的坐标
     startX: 0,
     startY: 0,
   };
 },
 methods: {
   /*用户按下屏幕
     1.记录用户按下屏幕的时间  Date.now() 时间戳 返回 1970-1-1到现在的毫秒数
     2.记录用户按下屏幕的坐标x和y
   */
   handleTouchstart(e) {
     //记录用户按下的时间
     this.startTime = Date.now();
     //记录用户按下的坐标
     this.startX = e.changedTouches[0].clientX;
     this.startY = e.changedTouches[0].clientY;
   },
   handleTouchend(e) {
     const endTime = Date.now();
     const endX = e.changedTouches[0].clientX;
     const endY = e.changedTouches[0].clientY;

     //判断按下的时长
     if (endTime - this.startTime > 2000) {
       return;
     }

     //滑动的方向
     let direction = "";

     //先判断用户滑动的距离  用[绝对值 ] 是否合法  合法:判断滑动的方向
       if (Math.abs(endX - this.startX) > 10&&Math.abs(endY-this.startY)<10) {
       //滑动方向  结束大于

       direction = endX - this.startX > 0 ? "right" : "left";
     } else {
       return;
     }

     console.log(direction);
   },
 },
};
</script>
看看效果吧在这里插入图片描述

最后到这就结束了,学到了就一键三连,谢谢啦~

更多推荐:wantLG的《uni-app使用阿里iconfont多色图标


Uniapp中实现页面左滑动切换的效果可以通过以下步骤进行操作。首先,你可以使用uni-swipe组件来实现滑动效果。该组件可以在左滑动时切换对应的tabs选项。你可以查阅uni-swipe组件的文档来了解具体的使用方法。如果在uni-swipe组件中没有找到满足你需求的功能,你可以考虑自己封装一个功能组件来实现左滑动切换的效果。通过封装组件,你可以根据自己的需求来自定义滑动切换的效果。最后,你可以在Uniapp的多个平台中进行测试和使用,包括iOS、Android、H5和小程序等平台。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Uniapp中实战实现左点击滚动功能](https://blog.csdn.net/qq_29701691/article/details/130224908)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [uniapp实现页面左滑动切换tab选项](https://blog.csdn.net/m0_46442996/article/details/116983049)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wantLG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值