首頁  >  文章  >  web前端  >  實作微信小程式中的滑動刪除功能

實作微信小程式中的滑動刪除功能

王林
王林原創
2023-11-21 18:22:071328瀏覽

實作微信小程式中的滑動刪除功能

實作微信小程式中的滑動刪除功能,需要具體程式碼範例

#隨著微信小程式的流行,開發者在開發過程中經常會遇到一些常見功能的實作問題。其中,滑動刪除功能是常見、常用的功能需求。本文將為大家詳細介紹如何在微信小程式中實現滑動刪除功能,並給出具體的程式碼範例。

一、需求分析
在微信小程式中,滑動刪除功能的實作涉及以下要點:

  1. 列表展示:要顯示可滑動刪除的列表,每個清單項目需要包含刪除操作。
  2. 觸發滑動:使用者觸摸清單項,產生滑動事件。
  3. 滑動動畫:實現平滑的滑動效果,即列表項目能夠隨著使用者手指滑動而滑動。
  4. 刪除操作:使用者滑動清單項目至一定位置後,放開手指,觸發刪除操作。

二、程式碼實作

  1. WXML部分:
    在小程式的WXML中,我們需要建立一個列表,其中每個列表項目都包含滑動刪除的功能。程式碼如下:
<view class="list">
  <block wx:for="{{listData}}" wx:for-item="item" wx:key="{{index}}">
    <view class="list-item" 
      animation="{{item.animation}}" 
      bindtouchstart="touchStart" 
      bindtouchmove="touchMove" 
      bindtouchend="touchEnd" 
      data-index="{{index}}">
      <view>{{item.title}}</view>
      <view class="btn-delete" bindtap="deleteItem" wx:if="{{item.showDel}}">删除</view>
    </view>
  </block>
</view>
  1. WXSS部分:
    在WXML中定義好樣式結構後,我們需要在WXSS中對樣式進行定義。具體程式碼如下:
.list{
  padding: 20rpx;
}

.list-item{
  position: relative;
  height: 100rpx;
  line-height: 100rpx;
  background-color: #ffffff;
  margin-bottom: 20rpx;
  overflow: hidden;
}

.btn-delete{
  position: absolute;
  top: 0;
  right: 0;
  width: 120rpx;
  height: 100rpx;
  background-color: #f5222d;
  color: #ffffff;
  line-height: 100rpx;
  text-align: center;
  transition: all 0.2s;
  transform: translateX(120rpx);
}

.list-item:hover .btn-delete{
  transform: translateX(0);
}
  1. JS部分:
    在小程式的JS檔案中,我們需要編寫特定的程式碼來實作滑動刪除功能。具體程式碼如下:
Page({
  data: {
    listData: [
      { title: '列表项1', showDel: false, animation: '' },
      { title: '列表项2', showDel: false, animation: '' },
      { title: '列表项3', showDel: false, animation: '' },
      // 其他列表项...
    ],
    startX: 0, // 手指起始X坐标
    startY: 0, // 手指起始Y坐标
    activeIndex: -1, // 激活的列表项索引
  },

  touchStart(e) {
    this.data.activeIndex = e.currentTarget.dataset.index;
    this.data.startX = e.touches[0].clientX;
    this.data.startY = e.touches[0].clientY;
  },

  touchMove(e) {
    let index = e.currentTarget.dataset.index;
    let startX = this.data.startX;
    let startY = this.data.startY;
    let deltaX = e.touches[0].clientX - startX;
    let deltaY = e.touches[0].clientY - startY;

    // 水平滑动大于竖直滑动
    if (Math.abs(deltaX) > Math.abs(deltaY)) {
      // 滑动方向向右
      if (deltaX > 30) {
        this.showDelete(index);
      }
      // 滑动方向向左
      else if (deltaX < -30) {
        this.hideDelete();
      }
    }
  },

  touchEnd(e) {
    this.data.startX = 0;
    this.data.startY = 0;
  },

  showDelete(index) {
    let listData = this.data.listData;
    listData[index].showDel = true;
    listData[index].animation = 'animation: showDelete 0.2s;';
    this.setData({
      listData: listData
    });
  },

  hideDelete() {
    let listData = this.data.listData;
    listData[this.data.activeIndex].showDel = false;
    listData[this.data.activeIndex].animation = '';
    this.setData({
      listData: listData
    });
  },

  deleteItem(e) {
    let index = e.currentTarget.dataset.index;
    let listData = this.data.listData;
    listData.splice(index, 1);
    this.setData({
      listData: listData
    });
  }
})

三、總結
透過以上的程式碼範例,我們可以輕鬆實現微信小程式中的滑動刪除功能。在WXML中,我們建構了滑動刪除功能所需的結構;在WXSS中,我們對樣式進行了定義;在JS中,我們編寫了具體實現滑動刪除功能的程式碼。希望本文能為您在微信小程式中實作滑動刪除功能提供協助。

以上是實作微信小程式中的滑動刪除功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn