小程序中手指触摸移动,触摸动作结束后恢复

上效果图
原始:
在这里插入图片描述
手指摸着下面白色区域可以往下移动
在这里插入图片描述
手指松开后恢复原始状态

  1. 在白色内容所在区域添加触摸事件
 <view class="cover-container" bindtouchstart="handleTouchStart"
    bindtouchmove="handleTouchMove" bindtouchend="handleToucheEnd"
    style="transform: {{coverTransform}};transition: {{coverTransition}}">
    ...
 </view>
  1. 在js页面写逻辑
  //定义所需变量
  var startY = 0;
  var moveY = 0;
  var moveDistance = 0;
  //手指触摸动作开始
  handleTouchStart(event) {
    //如果不加这句,会导致第二次触摸移动的时候带过滤动效,但是需求是只用回弹的时候带动效
    this.setData({
      coverTransition: ''
    });
    startY = event.touches[0].clientY;
  },
  //手指触摸后移动
  handleTouchMove(event) {
    moveY = event.touches[0].clientY;
    moveDistance = moveY - startY;
    //只能向下移动
    if (moveDistance <= 0) {
      return;
    }
    //规定的最大移动距离
    if (moveDistance >= 80) {
      moveDistance = 80;
    }
    this.setData({
      coverTransform: `translateY(${moveDistance}rpx)`
    });
  },
  //手指触摸动作结束
  handleToucheEnd() {
    this.setData({
      coverTransform: `translateY(0)`,
      coverTransition: 'transform 1s linear'
    });
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值