uni-app -- touchstart 和 touchend讲解(滑动组件的逻辑实现)


<template>
  <view class="content" @touchstart="startHandle" @touchend="touchHandle"> 触屏事件的学习 </view>
</template>

<script>
/* 1 给容器绑定两个触屏事件 touchstart 和 touchend 2 用户按下屏幕事件 1 记录用户按下屏幕的时间 Date.now() 时间戳 返回 1970 -1-1到现在的毫秒数 2 记录用户按下屏幕的坐标 x 和 y 3 用户离开屏幕事件 1 记录用户离开屏幕的时间 Date.now() 2 记录用户离开屏幕的坐标 x 和 y 3 根据按下和离开时间 运算 判断 用户按下屏幕时长是否合法 4 根据按下和离开两对坐标:先判断距离是否合法 后判断滑动的方向 注意:距离要加上绝对值 */ export default { data() { return { startTIme: 0, //按下的时间
 startX: 0, startY: 0, }; }, methods: { startHandle(event) { /* console.log("手指按下"); console.log(event.changedTouches[0].clientX); console.log(event.changedTouches[0].clientY); */
      this.startTIme = Date.now(); this.startX = event.changedTouches[0].clientX; this.startY = event.changedTouches[0].clientY; }, touchHandle(event) { console.log("手指离开"); const endTime = Date.now(); const endX = event.changedTouches[0].clientX; const endY = event.changedTouches[0].clientY; // 判断按下的时长是否合法
      if (endTime - this.startTIme > 2000) { return; } // 用户滑动的方向
 let direction = ""; // 判断用户滑动的距离是否合法 合法,则继续判断滑动方向 注意:距离要加上绝对值
      if (Math.abs(endX - this.startX) > 10) { direction = endX - this.startX > 0 ? "right" : "left"; } else { return; } // 用户做了合法的滑动操作
 console.log(direction); }, }, }; </script>

<style lang="scss" scoped> .content { width: 100%; height: 600rpx; background: cornflowerblue;
}
</style>
 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM