移动端判断手指的滑动方向

简介: 移动端判断手指的滑动方向

小程序中,不能够使用v-show; 因为v-show是让dom节点显示或者隐藏的;在小程序中是没有dom节点


使用v-if;因为v-if在内存中动态创建或者销毁的


<template>
  <view class="list-page">
    <!-- @touchstart触摸开始,多点触控,后面的手指同样会触发;   @touchmove 触摸点改变滑动时; touchend触摸结束,手指离开屏幕时;-->
      <text  @touchstart="handletouchstart" @touchend="handletouchend"  @touchmove="handletouchmove" class="demo1" v-for="(item,index) in arrList" :key="index">
        {{ item.cont}}-{{text}}=={{cont}}
      </text>
    <add-cricle-btn v-if="showFlag"></add-cricle-btn> 
  </view>
</template>
<script>


<script>
  import  cricleBtn from "../../components/add-cricle-btn.vue"
  export default {
    data() {
      return {
        arrList:[
          {cont:"13123"},
          {cont:"13123"},
          {cont:"13123"},
          {cont:"13123"},
          {cont:"13123"},
          {cont:"13123"},
          {cont:"13123"},
          {cont:"13123"},
          {cont:"13123"},
          {cont:"13123"},
          {cont:"13123"},
          {cont:"13123"},
          {cont:"13123"},
          {cont:"13123"},
          {cont:"13123"},
          {cont:"13123"}
        ],
        flag: 0,
        text: '',
        lastX: 0,
        lastY: 0,
        cont:"",
        showFlag:true,
      }
    },
    methods: {
      // 接触点改变,滑动时
      handletouchmove: function(event) {
            if (this.flag !== 0) {
              return;
            }
            this.cont="覆膜开始"
            console.log(event)
            let currentX = event.touches[0].pageX;
            let currentY = event.touches[0].pageY;
            let tx = currentX - this.lastX;
            let ty = currentY - this.lastY;
            let text = '';
            this.mindex = -1;
            //左右方向滑动
            if (Math.abs(tx) > Math.abs(ty)) {
              if (tx < 0) {
                text = '向左滑动';
                this.flag = 1;
              } else if (tx > 0) {
                text = '向右滑动';
                this.flag = 2;
              }
            }
            //上下方向滑动
            else {
              if (ty < 0) {
                text = '向上滑动';
                this.flag = 3;
                this.showFlag=false;
              } else if (ty > 0) {
                text = '向下滑动';
                this.flag = 4;
                this.showFlag=true;
              }
            }
            //将当前坐标进行保存以进行下一次计算
            this.lastX = currentX;
            this.lastY = currentY;
            this.text = text;
          },
          // 开始滑动
          handletouchstart: function(event) {
            this.lastX = event.touches[0].pageX;
            this.lastY = event.touches[0].pageY;
          },
          // 滑动结束结束
          handletouchend: function(event) {
            this.flag = 0;
            // this.text = '没有滑动';
          },
    },
    components:{
      'add-cricle-btn':cricleBtn
    }
  }
</script>


<style scoped>
  .list-page{
    display: flex;
    flex-direction: column;
  }
  .demo1{
    height: 100rpx;
    line-height: 100rpx;
    text-align: center;
    color: lightpink;
    font-size: 30rpx;
    border-bottom: 1px solid lightpink;
  }
</style>


相关文章
|
6月前
|
API
Camera2预览方向、拍照方向设置
Camera2预览方向、拍照方向设置
451 2
|
开发框架 iOS开发
手机软键盘弹起导致页面变形的一种解决方案
手机软键盘弹起导致页面变形的一种解决方案
452 0
|
iOS开发
iOS开发 - 渐变导航条升级版(判断滚动的方向和改变方向时的位置)
iOS开发 - 渐变导航条升级版(判断滚动的方向和改变方向时的位置)
136 0
iOS开发 - 渐变导航条升级版(判断滚动的方向和改变方向时的位置)
|
iOS开发
iOS开发 - ScrollView滚动时怎么判断滚动停止及滚动的方向
iOS开发 - ScrollView滚动时怎么判断滚动停止及滚动的方向
893 0
iOS-横竖屏管理,支持所有方向旋转时用代码控制允许旋转&不允许旋转
iOS-横竖屏管理,支持所有方向旋转时用代码控制允许旋转&不允许旋转
223 0
|
测试技术
软件测试面试题:如何模拟滚动条向下滑动?
软件测试面试题:如何模拟滚动条向下滑动?
55 0
|
Android开发
分享1个模拟各种复杂的滑动或手势操作的方法,赶紧学起来~
分享1个模拟各种复杂的滑动或手势操作的方法,赶紧学起来~
822 0
|
JavaScript 容器 前端开发
第127天:移动端-获取触摸点的位置
一、移动端轮播图滑动 1、先获取手指在轮播图元素上的滑动方向(左右) (1)手指触摸开始时记录手指所在的坐标X (2)获取界面上的轮播图容器var $carousels=$('.carousel'); (3)注册滑动事件(4)变量重复赋值(5)结束触摸的一瞬间记录最后手指所在坐标X (6)比较开始...
1582 0