微信实现左滑删除

wxml

 <view class="delete_list">
    <view wx:for="{{contactList}}" wx:key="{{index}}}" bindtouchstart="touchstart" bindtouchmove="touchmove" class='list-box' bindtouchend="touchend" data-index="{{index}}"  data-info='{{item}}'>
      <view class="list">
        <view class="content" style="{{activeIndex===index?list_style:''}}">{{item.name}}</view>
        <view class="delete" data-info="{{item}}" bindtap="deleteContact" style="{{activeIndex===index?list_style:''}}">删除</view>
      </view>
      <view style='' class='list-border {{index==contactList.length-1?"no-border":""}}'></view>
    </view>
  </view>

wxss

/* 滑动删除的样式 */
.delete_list {
  background-color: #fff;
  padding-left: 32rpx;
  box-sizing: border-box;
}
.delete_list .list {
  height: 120rpx;
  line-height: 120rpx;
  display: flex;
  width: 100%;
  overflow: hidden;
   /* box-shadow: 0 0px 0px 0px #fff; 模拟一像素边框 */
}
.list-border{
margin-right:32rpx;
border-bottom:2rpx solid #EFF1F4;
}
.no-border{
  border-bottom: 0!important;
}
.delete_list .list>.content {
  flex: 1;
  transform: translateX(240rpx); /* 这个是delete的宽度的设置 */
  margin-left: -240rpx;/* 这个是delete的宽度的设置 */
  transition: all 0.2s ease-in-out;
}
.delete_list .list>.delete {
  width: 240rpx;
  text-align: center;  
  color: #fff;
  background-color: #E64340;
  transform: translateX(240rpx);/* 这个是delete默认将其隐藏*/
  transition: all 0.2s ease-in-out;
}

js

  data: {
    contactList: [
      { id: 19, memberId: 105256, name: "hh", phone: "15236253253", selected: null },
      { id: 20, memberId: 105256, name: "ff", phone: "18836293253", selected: null },
    ], //数据接收
    activeIndex: -1, //这个约束滑动元素只能打开一个,打开第二的时候第一个关闭
    list_style: '', //元素左滑的样式
    startX: 0,
    rate: 2  //转化rpx的接收属性
  },
    onLoad: function(options) {
    // 获取设备宽度从而进行像素转换
    let rate = 750 / wx.getSystemInfoSync().screenWidth 
    this.setData({
      rate: rate
    })
  },
  // 触摸开始
  touchstart: function(e) {
    let startX = e.touches[0].clientX
    console.log(startX)
    this.setData({
      startX: startX
    })
  },
  // 移动
  touchmove: function(e) {
    console.log(e.touches[0].clientX)
    let moveX = e.touches[0].clientX
    let dis = (this.data.startX - moveX) * this.data.rate // 换算成rpx
    let activeIndex = e.currentTarget.dataset.index
    let left = 240
    if (dis <= 0) {
      left = 240
    } else if (dis >= 240) {
      left = 0
    } else {
      left = 240 - dis
    }
    this.setData({
      list_style: 'transform:translateX(' + left + 'rpx)',
      activeIndex: activeIndex
    })
  },
  // 触摸结束
  touchend: function(e) {
    let endX = e.changedTouches[0].clientX
    let dis = (this.data.startX - endX) * this.data.rate
    let activeIndex = e.currentTarget.dataset.index
    let left = 0
    if (dis >= 200) {
      left = 0
    } else {
      left = 240
    }
    this.setData({
      activeIndex: activeIndex,
      list_style: 'transform:translateX(' + left + 'rpx)'
    })
  },
// 删除
  deleteContact: function(e) {
    console.log(e)
    let val = e.currentTarget.dataset.info
    let _this = this
    util.request(['personalCenter', 'deleteMemberEmergencyContact'], [parseInt(val.id)], res => {
      console.log(res)
      wx.showToast({
        title: '删除成功',
      })
      _this.data.contactList.splice(_this.data.activeIndex, 1)
      _this.setData({
        contactList: _this.data.contactList
      })
    })
  },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值