微信小程序信息會話列表刪除功能


示例:

 

 其實也算是挺簡單的一個功能:

     首先我們可以將頁面畫出來

wxml

<view style="background:#F7F7F7;height:100%;">
  <view class="inforList">
    <view wx:for="{{inforList}}" wx:key="index" class="list" bindtouchstart="drawStart" bindtouchmove="drawMove" bindtouchend="drawEnd" style="left:{{item.left}}rpx" data-index="{{index}}" bindtap="inforTap">
      <image src="{{item.src}}" class="infor_img"></image>
      <view class="content">
        <view class="con_top">
          <view class="con_right">
            <view class="vip" style="{{item.isVIP?'background:#F53249;':'background:#b7b7b7;'}}">vip</view>
            <view class="infor_name">{{item.name}}</view>
          </view>
          <view class="infor_time">{{item.time}}</view>
        </view>
        <view class="con_bottom">
          <view class="infor_near">{{item.nearInformation}}</view>
          <view class="infor_num">{{item.inforNum}}</view>
        </view>
      </view>
      <view class="remove" data-index="{{index}}" bindTap="delTap">刪除</view>
    </view>
  </view>
</view>

  

wxss

 

/* pages/actiondetail/index.wxss */
.inforList{
  width: 100%;
  display: flex;
  flex-direction: column;
}
.inforList .list{
  height: calc(139rpx - 24rpx);
  width: calc(100% - 60rpx);
  display: flex;
  padding: 24rpx 30rpx 0 30rpx;
  position: relative;
}
.list .infor_img{
  width: 90rpx;
  height: 90rpx;
  margin-right: 30rpx;
}
.list .content{
  width: calc(100% - 120rpx);
  height: 100%;
  border-bottom: 1rpx solid #E5E5E5;
}
.content .con_top{
  height: 40rpx;
  width: 100%;
  display: flex;
}
.con_top .con_right{
  width: calc(100% - 100rpx);
  display: flex;
}
.con_top .vip{
  width: 58rpx;
  height: 32rpx;
  border-radius: 16rpx;
  color: #ffffff;
  font-size: 20rpx;
  text-align: center;
  line-height: 30rpx;
  margin-right: 15rpx;
  margin-top: 6rpx;
}
.con_top .infor_name{
  color: #333333;
  font-size: 32rpx;
}
.con_top .infor_time{
  color: #aaaaaa;
  font-size: 22rpx;
  width: 100rpx;
}
.content .con_bottom{
  margin-top: 15rpx;
  height: calc(100% - 55rpx);
  width: 100%;
  display: flex;
  justify-content: space-between;
}
.con_bottom .infor_near{
  width: calc(100% - 50px);
  color: #999999;
  font-size: 26rpx;
  overflow: hidden;
  height: 38rpx;
}
.con_bottom .infor_num{
  width: 30rpx;
  height: 30rpx;
  border-radius: 50%;
  text-align: center;
  line-height: 30rpx;
  background: #FF4444;
  color: #ffffff;
  font-size: 20rpx;
}
.list .remove{
  width: 140rpx;
  height: 139rpx;
  background: #FF5C5C;
  text-align: center;
  line-height: 139rpx;
  font-size: 34rpx;
  color: #ffffff;
  position: absolute;
  right: -140rpx;
  top: 0;
}

 

  

 

js里面加一點假數據

data: {
    name: '',
    inforList: [
      {
        src: '/imgs/homeicon-1shoulder.png',
        isVIP: true,
        name: '齊磊',
        time: '11小時前',
        nearInformation: '這是一條最近的消息',
        inforNum: 3,
        left: 0
      },
      {
        src: '/imgs/homeicon-3back.png',
        isVIP: true,
        name: '王一',
        time: '1小時前',
        nearInformation: '這是內容',
        inforNum: 1,
        left: 0
      },
      {
        src: '/imgs/homeicon-6Buttock.png',
        isVIP: true,
        name: '李二',
        time: '15小時前',
        nearInformation: '這是一條最近的消息這是一條最近的消息這是一條最近的消息',
        inforNum: 5,
        left: 0
      },
      {
        src: '/imgs/homeicon-8Aerobic.png',
        isVIP: true,
        name: '張三',
        time: '一天前',
        nearInformation: '這是一條最近的消息',
        inforNum: 2,
        left: 0
      }
    ],
    startX: 0
  },

  

這樣我們基本的頁面就出來了

 

 

 

  其次我們該考慮怎么樣實現左滑出現刪除呢

        這里我的做法很簡單,那就是控制它的left值(css里面我給他定位了),刪除在最右邊 我們可以修改left值查看

n那么接下來就是考慮用什么方法控制他的left值,這里就用到了官網里面給的三個方法

 

 

 

 

 

 

那么我們就試着用用他

// pages/actiondetail/index.js
Page({

  /**
   * 頁面的初始數據
   */
  data: {
    name: '',
    inforList: [
      {
        src: '/imgs/homeicon-1shoulder.png',
        isVIP: true,
        name: '齊磊',
        time: '11小時前',
        nearInformation: '這是一條最近的消息',
        inforNum: 3,
        left: 0
      },
      {
        src: '/imgs/homeicon-3back.png',
        isVIP: true,
        name: '王一',
        time: '1小時前',
        nearInformation: '這是內容',
        inforNum: 1,
        left: 0
      },
      {
        src: '/imgs/homeicon-6Buttock.png',
        isVIP: true,
        name: '李二',
        time: '15小時前',
        nearInformation: '這是一條最近的消息這是一條最近的消息這是一條最近的消息',
        inforNum: 5,
        left: 0
      },
      {
        src: '/imgs/homeicon-8Aerobic.png',
        isVIP: true,
        name: '張三',
        time: '一天前',
        nearInformation: '這是一條最近的消息',
        inforNum: 2,
        left: 0
      }
    ],
    startX: 0
  },

  /**
   * 生命周期函數--監聽頁面加載
   */
  onLoad: function (options) {
    
  },
  drawStart: function (e) {
    console.log("drawStart") 
    var touch = e.touches[0]
    console.log(touch)
    for(var index in this.data.inforList) {
      var item = this.data.inforList[index]
      item.left = 0
    }
    this.setData({
      inforList: this.data.inforList,
      startX: touch.clientX,
    })
 
  },
  drawMove: function (e) {
    console.log("drawMove") 
    var touch = e.touches[0]
    console.log(touch) 
    var item = this.data.inforList[e.currentTarget.dataset.index]
    var disX = this.data.startX - touch.clientX
    
    if (disX >= 10) {
      if (disX > 140) {
        item.left = -140
      } else {
        item.left = '-' + disX
      }
      this.setData({
        inforList: this.data.inforList
      })
    } else {
      item.left = 0
      this.setData({
        inforList: this.data.inforList
      })
    }
  },  
  drawEnd: function (e) {
    console.log("drawEnd") 
    var touch = e.touches[0]
    console.log(e, touch)
    var item = this.data.inforList[e.currentTarget.dataset.index]
    if (item.left <= -70) {
      item.left = -140
      this.setData({
        inforList: this.data.inforList,
      })
    } else {
      item.left = 0
      this.setData({
        inforList: this.data.inforList,
      })
    }
  },
  delTap (e) {
    var index = e.currentTarget.dataset.index
    var arr = []
    this.data.inforList.filter((item, idx) => {
      if (index != idx) {
        arr.push(item)
      }
    })
    this.setData({
      inforList: arr
    })
  },
  /**
   * 生命周期函數--監聽頁面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函數--監聽頁面顯示
   */
  onShow: function () {

  },

  /**
   * 生命周期函數--監聽頁面隱藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函數--監聽頁面卸載
   */
  onUnload: function () {

  },

  /**
   * 頁面相關事件處理函數--監聽用戶下拉動作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 頁面上拉觸底事件的處理函數
   */
  onReachBottom: function () {

  },

  /**
   * 用戶點擊右上角分享
   */
  onShareAppMessage: function () {

  }
})

  

這樣我們就實現了向左滑動出現刪除功能

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM