微信小程序列表item左滑操作

1608531471.jpg

页面DOM:index.wxml

<view class="touchList {{(moving && moveIndex==index) ? "moving" :""}}" wx:for="{{listData}}" wx:key="index">
	<view class="device_item"  bindtap="go" bindtouchstart="touchS" bindtouchmove="touchM" data-index="{{index}}">
	</view>
	<view class="touchBtn">
		<view class="editBtn" bindtap="editBtn">修改</view>
		<view class="delBtn" bindtap="delBtn">删除</view>
	</view>
</view>

逻辑层:index.js


data{
    moving:false,
    moveIndex:-1
}

touchS(e) {
    let index = e.currentTarget.dataset.index;
    // 获得起始坐标
    this.startX = e.touches[0].clientX;
    this.startY = e.touches[0].clientY;
    this.setData({
      moveIndex:index
    })
  }, 
  touchM(e) {
    // 获得当前坐标
    this.currentX = e.touches[0].clientX;
    this.currentY = e.touches[0].clientY;
    const x = this.startX - this.currentX; //横向移动距离
    const y = Math.abs(this.startY - this.currentY); //纵向移动距离,若向左移动有点倾斜也可以接受
    if (x > 35 && y < 110) {
    //向左滑是显示删除
      this.setData({
        moving: true
      })
    } else if (x < -35 && y < 110) {
    //向右滑
      this.setData({
        moving: false
      })
    }
  }

样式:index.wxss

.touchList{
  position:relative;
}

.touchList .device_item{
  position: relative;
  left: 0;
  transition: all 0.3s;
}
.touchList.moving .device_item{
  left: -280rpx;
}
.touchList .touchBtn{
  position: absolute;
  display: flex;
  height: 100%;
  right: -280rpx;
  top: 0;
  transition: all 0.3s;
}
.touchList.moving .touchBtn{
  right: 0rpx;
}

.touchList .touchBtn view{
  display: flex;
  justify-content: center;
  align-items: center;
  width: 140rpx;
  height: 100%;
  color: #fff;
  font-size: 24rpx;
}

.touchList .touchBtn view.editBtn{
  background: #0070CC;
}

.touchList .touchBtn view.delBtn{
  background: red;
}

个人主页,欢迎来访

参考来源:猿猿猿_yyy

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值