微信小程序開發(fā)惧眠,左滑刪除

聲明:

  1. 根據(jù)資料配合項目需求進(jìn)行了一點(diǎn)修改,原文地址

展示圖例

頁面部分

頁面中‘list’部分定位在上層暴拄,滑動上層漏出下層右側(cè)的‘刪除’按鈕漓滔,通過循環(huán)‘a(chǎn)rr’,添加txtStyle樣式乖篷,改變滑動狀態(tài)

<view class='box' wx:for="{{arr}}" wx:key='*this'>
  <view class='list'
    bindtouchstart="touchS" 
    bindtouchmove="touchM" 
    bindtouchend="touchE" 
    style="{{item.txtStyle}}" 
    data-index="{{index}}">
    {{item.title}}
  </view>
  <view class='btn'  
    catchtap="delOrder" 
    data-index='{{index}}' 
    data-id='{{item.id}}'>
    刪除   
  </view>
</view>

JS部分

‘delBtnWidth’向左滑動的距離設(shè)定為刪除按鈕的寬度
‘openDelIdx’記錄已經(jīng)滑動過滑塊的index右蒲,在滑動下一個條目或者點(diǎn)擊刪除按鈕時還原之前滑動的樣式

Page({
  data: {
    arr: [],
    openDelIdx: 0, // 記錄滑動過條目的index
    delBtnWidth: 150//刪除按鈕寬度單位(rpx)
  },

  /**
   * 還原之前滑動樣式
   */
  clearLeftMove() {
    var list = this.data.arr;
    list[this.data.openDelIdx].txtStyle = 'left:0px'
    this.setData({
      arr: list
    });
  },

  /**
   * 手指觸摸開始
   */
  touchS: function (e) {
    //判斷是否只有一個觸摸點(diǎn)
    if (e.touches.length == 1) {
      this.clearLeftMove();
      this.setData({
        //記錄觸摸起始位置的X坐標(biāo)
        startX: e.touches[0].clientX
      });
    }
  },

  /**
   * 手指觸摸滑動
   */
  touchM: function (e) {
    var that = this;
    if (e.touches.length == 1) {
      //記錄觸摸點(diǎn)位置的X坐標(biāo)
      var moveX = e.touches[0].clientX;
      //計算手指起始點(diǎn)的X坐標(biāo)與當(dāng)前觸摸點(diǎn)的X坐標(biāo)的差值
      var disX = that.data.startX - moveX;
      //delBtnWidth 為右側(cè)按鈕區(qū)域的寬度
      var delBtnWidth = that.data.delBtnWidth;
      var txtStyle = "";
      if (disX == 0 || disX < 0) {//如果移動距離小于等于0惰说,文本層位置不變
        txtStyle = "left:0";
      } else if (disX > 0) {//移動距離大于0捌臊,文本層left值等于手指移動距離
        txtStyle = "left:-" + disX + "rpx";
        if (disX >= delBtnWidth) {
          //控制手指移動距離最大值為刪除按鈕的寬度
          txtStyle = "left:-" + delBtnWidth + "rpx";
        }
      }
      //獲取手指觸摸的是哪一個item
      var index = e.currentTarget.dataset.index;
      var list = that.data.arr;
      //將拼接好的樣式設(shè)置到當(dāng)前item中
      list[index].txtStyle = txtStyle;
      //更新列表的狀態(tài)
      this.setData({
        arr: list
      });
    }
  },

  /**
   * 手指觸摸結(jié)束
   */
  touchE: function (e) {
    var that = this;
    if (e.changedTouches.length == 1) {
      //手指移動結(jié)束后觸摸點(diǎn)位置的X坐標(biāo)
      var endX = e.changedTouches[0].clientX;
      //觸摸開始與結(jié)束或链,手指移動的距離
      var disX = that.data.startX - endX;
      var delBtnWidth = that.data.delBtnWidth;
      //如果距離小于刪除按鈕的1/2,不顯示刪除按鈕
      var txtStyle = disX > delBtnWidth / 2 ? "left:-" + delBtnWidth + "rpx" : "left:0";
      //獲取手指觸摸的是哪一項
      var index = e.currentTarget.dataset.index;
      var list = that.data.arr;
      list[index].txtStyle = txtStyle;
      //更新列表的狀態(tài)
      that.setData({
        openDelIdx: index,
        arr: list
      });
    }
  },

  /**
   * 刪除訂單
   */
  delOrder: function (e) {
    var order_id = e.currentTarget.dataset.id;
    var index = e.currentTarget.dataset.index;
    var that = this;
    that.clearLeftMove(); // 滑動恢復(fù)原狀
    wx.showModal({
      title: '提示',
      content: '確認(rèn)刪除這個分類么鲸沮?',
      success(res) {
        if (res.confirm) {    
          // 此處添加刪除請求
          that.delItem(index);
        } else if (res.cancel) {

        }
      }
    })
    
  },

  /**
   * 刪除頁面item
   */
  delItem: function (index) {
    var list = this.data.arr
    list.splice(index, 1);
    this.setData({
      arr: list
    });
  },

  onLoad: function () {
    var list = [
      { id: 1, title: 'aaa' }, 
      { id: 2, title: 'bbb' }, 
      { id: 3, title: 'ccc' }, 
      { id: 4, title: 'ddd' }, 
      { id: 5, title: 'eee' }
    ];
    this.setData({
      arr: list
    });
  },
})

CSS部分

.box{
  position: relative;
  border-bottom:1rpx solid #EAE8E8; 
  height: 118rpx;
  display: flex;
  flex-direction: row;
  justify-content: flex-end;
}
.list{
  padding: 16rpx 28rpx;
  font-size: 32rpx;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  line-height: 86rpx;
  transition: left 0.2s ease-in-out;
  z-index: 5;
  background-color: #fff;
  box-sizing:border-box;
}
.btn{
  width: 150rpx;
  height: 100%;
  line-height: 118rpx;
  background-color: #FF5555;
  color: #fff;
  font-size: 32rpx;
  text-align: center;
}

最后附上代碼片段

https://developers.weixin.qq.com/s/hWvm12mM7H9j

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末琳骡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子讼溺,更是在濱河造成了極大的恐慌日熬,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肾胯,死亡現(xiàn)場離奇詭異,居然都是意外死亡耘纱,警方通過查閱死者的電腦和手機(jī)敬肚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來束析,“玉大人艳馒,你說我怎么就攤上這事≡笨埽” “怎么了弄慰?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蝶锋。 經(jīng)常有香客問我陆爽,道長,這世上最難降的妖魔是什么扳缕? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任慌闭,我火速辦了婚禮别威,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘驴剔。我一直安慰自己省古,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布丧失。 她就那樣靜靜地躺著豺妓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪布讹。 梳的紋絲不亂的頭發(fā)上琳拭,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機(jī)與錄音炒事,去河邊找鬼臀栈。 笑死,一個胖子當(dāng)著我的面吹牛挠乳,可吹牛的內(nèi)容都是我干的权薯。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼睡扬,長吁一口氣:“原來是場噩夢啊……” “哼盟蚣!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起卖怜,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤屎开,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后马靠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奄抽,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年甩鳄,在試婚紗的時候發(fā)現(xiàn)自己被綠了逞度。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡妙啃,死狀恐怖档泽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情揖赴,我是刑警寧澤馆匿,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站燥滑,受9級特大地震影響渐北,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜突倍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一腔稀、第九天 我趴在偏房一處隱蔽的房頂上張望盆昙。 院中可真熱鬧,春花似錦焊虏、人聲如沸淡喜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽炼团。三九已至,卻和暖如春疏尿,著一層夾襖步出監(jiān)牢的瞬間瘟芝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工褥琐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锌俱,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓敌呈,卻偏偏與公主長得像贸宏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子磕洪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容