小程序左滑显示删除功能

思路

  1. 采用分层思想,每个item分为上下两层,上面一层放内容,下面一层放删除按钮

  2. 上面一层采用绝对定位,下面一层放到需要显示的位置,通过动态设置right属性的值,来实现向左滑动漏出下面的删除按钮

  3. 通过touchstart,touchmove 这几个事件来判断滑动的方向

  4. 通过item的index值确定滑动的是哪一项,设置滑动项的right值

在需要滑动的item上注册事件

<view class='address-list' data-index="{{index}}" bindtouchstart='touchStart' bindtouchmove='touchMove'>

  <!-- 删除按钮 -->
    <view class='del'><image src='{{AppImg.address_del}}'></image></view>
    <!-- 内容 -->
    <view class='adsInfo' style="right:{{item.right}}">
      <view class='icontrue'><image src='{{AppImg.address_right}}'></image></view>
      <view class='info'>
        <view class='info-name'>涂山苏苏</view>
        <view class='info-address'>海市上海市浦东新海市上海市浦东新海市上海市浦东新</view>
      </view>
      <view class='iconmsg'><image src='{{AppImg.address_change}}'></image></view>
    </view>

</view>

js


data:{
    movedel:{
      clientStart:'',//滑动开始的位置
      clientMove:'',//滑动的位置
    },
    addressList:[
      {id:1,right:''},
      { id: 2, right: '' }
    ]
}


// 开始滑动
  touchStart(e){
    let start = "movedel.clientStart"
    this.setData({
      [start]: e.touches[0].clientX
    })
  },
  // 滑动
  touchStart(e){
    let start = "movedel.clientStart"
    this.setData({
      [start]: e.touches[0].clientX
    })
  },
  // 滑动
  touchMove(e){
    let move = 'movedel.clientMove'
    this.setData({
      [move]: e.touches[0].clientX
    })
    let distance = this.data.movedel.clientStart - this.data.movedel.clientMove
    //确定滑动的是哪一项
    let index = e.currentTarget.dataset.index
    
    let list = this.data.addressList

    if(distance<=0){
      list[index].right = '0';
      this.setData({
        addressList:list
      })
    }
    if(distance>=80){
      list[index].right = '80rpx';
      this.setData({
        addressList: list
      })
    }
  },
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值