小程序模板:专业的小程序模板与静态模板分享平台
小程序
教程
搜索
当前位置 : 首页> 小程序教程> 微信小程序实现左滑删除效果

微信小程序实现左滑删除效果

要在微信小程序中实现左滑删除效果,你可以使用小程序提供的 movable-view 组件和触摸事件来实现。

            
      左滑删除              
      删除
/* 在页面的 wxss 文件中定义样式 */
.container {
  width: 100%;
}

.content {
  height: 100%;
  background-color: #fff;
  display: flex;
  justify-content: flex-start;
  align-items: center;
  padding-left: 20rpx;
  font-size: 28rpx;
  color: #333;
}

.delete {
  height: 100%;
  width: 200rpx;
  background-color: #f00;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 28rpx;
  color: #fff;
}
// 在页面的 js 文件中编写事件处理函数
Page({
  data: {
    // 模拟的列表数据
    list: [
      { offsetX: 0 },
      { offsetX: 0 },
      { offsetX: 0 }
    ]
  },

  handleMoveChange: function(e) {
    const { index, x } = e.currentTarget.dataset;
    const { list } = this.data;

    list[index].offsetX = x;

    this.setData({
      list: list
    });
  },

  handleTouchStart: function(e) {
    // 初始化当前滑动项的初始位置
    const { index } = e.currentTarget.dataset;
    const { list } = this.data;

    list.forEach((item) => {
      if (item.offsetX !== 0) {
        item.offsetX = 0;
      }
    });

    list[index].startX = e.changedTouches[0].pageX;

    this.setData({
      list: list
    });
  },

  handleTouchEnd: function(e) {
    const { index, startX } = e.currentTarget.dataset;
    const { list } = this.data;
    const moveX = e.changedTouches[0].pageX - startX;

    if (moveX  {
          if (res.confirm) {
            list.splice(index, 1);

            this.setData({
              list: list
            });
          } else {
            this.restoreOffsetX(index);
          }
        }
      });
    } else {
      // 用户滑动未到达删除阈值,恢复滑动项的位置
      this.restoreOffsetX(index);
    }
  },

  handleTap: function(e) {
    // 处理滑动项的点击事件
    console.log('点击了滑动项');
  },

  restoreOffsetX: function(index) {
    const { list } = this.data;

    list[index].offsetX = 0;

    this.setData({
      list: list
    });
  }
});

在上述代码示例中,我们使用 movable-view 组件来创建可滑动的视图,使用 bindchange 事件监听视图的位置变化,使用 bindtouchstart 和 bindtouchend 事件监听触摸开始和结束的事件,使用 bindtap 事件监听滑动项的点击事件。

通过修改滑动项的 offsetX 属性,可以控制滑动项的位置。在 handleTouchStart 方法中,我们记录滑动项的初始位置,并在 handleTouchEnd 方法中,根据用户滑动的距离来判断是否执行删除操作或回复滑动项的位置。

当用户滑动到达一定的阈值时,弹出确认删除的对话框,用户确认后删除对应项的数据,并更新列表的 list 数据。当用户滑动未达到删除阈值时,我们通过 restoreOffsetX 方法恢复滑动项的位置。

联系客服 意见反馈

签到成功!

已连续签到1天,签到3天将获得积分VIP1天

知道了