微信小程序左右滑動(dòng)刪除事件詳解
本文實(shí)例為大家分享了微信小程序左右滑動(dòng)刪除事件,供大家參考,具體內(nèi)容如下
效果圖



上代碼
<scroll-view scroll-y enable-back-to-top style="height:{{ scrollHeight }}px" >
? ? <view>
? ? ? ? <block wx:for="{{ list }}" wx:for-item="item" wx:for-index="index" wx:key="index" >
? ? ? ? ? ? <view class="list {{ item.isTouchMove ? 'touch-move-active' : '' }}" ? ?bindtouchstart="touchStart" bindtouchmove="touchMove" data-index="{{ index }}" >
? ? ? ? ? ? ? ? <view class="txt">{{ item.id }} -- {{ item.title }}</view>
? ? ? ? ? ? ? ? <view class="del" bindtap="delList" data-index="{{ index }}" > 刪除 </view>
? ? ? ? ? ? </view>
? ? ? ? </block>
? ? </view>
</scroll-view>/* 列表 */
.list {
? ? display: flex;
? ? justify-content: space-between;
? ? width: 100%;
? ? height: 100rpx;
? ? line-height: 100rpx;
? ? overflow: hidden;
? ? text-align: center;
? ? border-bottom: 1px solid #cccccc;
}
/* 列表內(nèi)容 */
.list .txt {
? ? flex-grow: 1;
? ? width: 100%;
? ? margin-left: -150rpx;
? ? background-color: #fff;
}
/* 刪除按鈕 */
.list .del {
? ? flex-grow: 0;
? ? width: 150rpx;
? ? color: #fff;
? ? background-color: #fe3e2f;
}
.list .txt, .list .del {
? ? transform: translateX(150rpx);
? ? transition: all 0.4s;
}
.touch-move-active .txt,.touch-move-active .del {
? ? -webkit-transform: translateX(0);
? ? transform: translateX(0);
}js:
Page({
? ? /**
? ? ?* 頁(yè)面的初始數(shù)據(jù)
? ? ?*/
? ? data: {
? ? ? ? list: [
? ? ? ? ? ? { id: "0001", title: "商品1" },
? ? ? ? ? ? { id: "0002", title: "商品2" },
? ? ? ? ? ? // ..........
? ? ? ? ],
? ? ? ? scrollHeight: 0, ?// scroll-view高度
? ? ? ? startX: 0, ? ? ? ?// 開始X坐標(biāo)
? ? ? ? startY: 0, ? ? ? ?// 開始Y坐標(biāo)
? ? },
? ? // 手指觸摸動(dòng)作開始
? ? touchStart: function(e){
? ? ? ? let that = this;
? ? ? ? //開始觸摸時(shí) 重置所有刪除
? ? ? ? that.data.list.forEach(function (v, i) {
? ? ? ? ? ? if (v.isTouchMove) v.isTouchMove = false; // 只操作為true的
? ? ? ? })
? ? ? ? // 記錄手指觸摸開始坐標(biāo)
? ? ? ? that.setData({
? ? ? ? ? ? startX: e.changedTouches[0].clientX, ?// 開始X坐標(biāo)
? ? ? ? ? ? startY: e.changedTouches[0].clientY, ?// 開始Y坐標(biāo)
? ? ? ? ? ? list: that.data.list
? ? ? ? })
? ? },
? ? // 手指觸摸后移動(dòng)
? ? touchMove: function(e){
? ? ? ? let that = this,
? ? ? ? ? ? index = e.currentTarget.dataset.index, ? ?// 當(dāng)前下標(biāo)
? ? ? ? ? ? startX = that.data.startX, ? ? ? ? ? ? ? ?// 開始X坐標(biāo)
? ? ? ? ? ? startY = that.data.startY, ? ? ? ? ? ? ? ?// 開始Y坐標(biāo)
? ? ? ? ? ? touchMoveX = e.changedTouches[0].clientX, // 滑動(dòng)變化坐標(biāo)
? ? ? ? ? ? touchMoveY = e.changedTouches[0].clientY, // 滑動(dòng)變化坐標(biāo)
? ? ? ? ? ? // 獲取滑動(dòng)角度
? ? ? ? ? ? angle = that.angle({ X: startX, Y: startY }, { X: touchMoveX, Y: touchMoveY });
// 判斷滑動(dòng)角度
? ? ? ? that.data.list.forEach(function (v, i) {
? ? ? ? ? ? v.isTouchMove = false
? ? ? ? ? ? // 滑動(dòng)超過30度角 return
? ? ? ? ? ? if (Math.abs(angle) > 30) return;
? ? ? ? ? ? if (i == index) {
? ? ? ? ? ? ? ? // 右滑
? ? ? ? ? ? ? ? if (touchMoveX > startX)?
? ? ? ? ? ? ? ? ? ? v.isTouchMove = false
? ? ? ? ? ? ? ? // 左滑
? ? ? ? ? ? ? ? else?
? ? ? ? ? ? ? ? ? ? v.isTouchMove = true
? ? ? ? ? ? }
? ? ? })
? ? ? // 更新數(shù)據(jù)
? ? ? that.setData({
? ? ? ? ? list: that.data.list
? ? ? })
? ? },
? ? // 計(jì)算滑動(dòng)角度
? ? angle: function (start, end) {
? ? ? ? let that = this,
? ? ? ? ? ? _X = end.X - start.X,
? ? ? ? ? ? _Y = end.Y - start.Y;
? ? ? ? // 返回角度 /Math.atan()返回?cái)?shù)字的反正切值
? ? ? ? return 360 * Math.atan(_Y / _X) / (2 * Math.PI);
? ? },
? ? // 刪除
? ? delList: function(e){
? ? ? ? let that = this,
? ? ? ? ? ? index = e.currentTarget.dataset.index; ?// 當(dāng)前下標(biāo)
// 切割當(dāng)前下標(biāo)元素,更新數(shù)據(jù)
? ? ? ? that.data.list.splice(index, 1);?
? ? ? ? that.setData({
? ? ? ? ? ? list: that.data.list
? ? ? ? })
? ? },
? ? /**
? ? ?* 生命周期函數(shù)--監(jiān)聽頁(yè)面加載
? ? ?*/
? ? onLoad: function (options) {
? ? ? ? let that = this;
? ? ? ? // 動(dòng)態(tài)獲取屏幕高度
? ? ? ? that.setData({
? ? ? ? ? ? scrollHeight: wx.getSystemInfoSync().screenHeight
? ? ? ? })
? ? },
})這是左滑動(dòng)刪除,如需要右滑動(dòng)刪除在js頁(yè)面調(diào)整一下就好。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
實(shí)例學(xué)習(xí)JavaScript讀取和寫入cookie
本篇內(nèi)容主要給大家通過實(shí)例講述了JavaScript讀取和寫入cookie的相關(guān)知識(shí)點(diǎn),有這方面需要的朋友參考下吧。2018-01-01
微信小程序頁(yè)面滾動(dòng)到指定位置代碼實(shí)例
這篇文章主要介紹了微信小程序頁(yè)面滾動(dòng)到指定位置代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之檢索算法示例【二分查找法、計(jì)算重復(fù)次數(shù)】
這篇文章主要介紹了JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之檢索算法,結(jié)合實(shí)例形式分析了二分查找法、計(jì)算重復(fù)次數(shù)相關(guān)算法原理與使用技巧,需要的朋友可以參考下2019-02-02
用js實(shí)現(xiàn)預(yù)覽待上傳的本地圖片
用js實(shí)現(xiàn)預(yù)覽待上傳的本地圖片...2007-03-03
分離與繼承的思想實(shí)現(xiàn)圖片上傳后的預(yù)覽功能:ImageUploadView
本文要介紹的是網(wǎng)頁(yè)中常見的圖片上傳后直接在頁(yè)面生成小圖預(yù)覽的實(shí)現(xiàn)思路,考慮到該功能有一定的適用性,于是把相關(guān)的邏輯封裝成了一個(gè)ImageUploadView組件,實(shí)際使用效果可查看下一段的git效果圖2016-04-04
javascript使用canvas實(shí)現(xiàn)餅狀圖效果
這篇文章主要為大家詳細(xì)介紹了javascript使用canvas實(shí)現(xiàn)餅狀圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09

