小程序?qū)崿F(xiàn)左滑刪除效果
本文實(shí)例為大家分享了小程序?qū)崿F(xiàn)左滑刪除效果的具體代碼,供大家參考,具體內(nèi)容如下

1、movable-area基本概念
實(shí)現(xiàn)思路:
大家仔細(xì)去看看官網(wǎng)的文檔后再來(lái)看我寫(xiě)的這篇文章可能會(huì)更好理解。
(1)movable-area這個(gè)就是定義了一個(gè)移動(dòng)的區(qū)域,跟普通的<view></view>的含義是一樣的,不同在于,接著往下看;
注意:movable-area 必須設(shè)置width和height屬性,不設(shè)置默認(rèn)為10px
(2)movable-view這個(gè)就是一個(gè)可移動(dòng)的視圖容器,可以在頁(yè)面中拖拽滑動(dòng)。
movable-view 必須設(shè)置width和height屬性,不設(shè)置默認(rèn)為10px
movable-view 默認(rèn)為絕對(duì)定位,top和left屬性為0px
當(dāng)movable-view小于movable-area時(shí),movable-view的移動(dòng)范圍是在movable-area內(nèi);當(dāng)movable-view大于movable-area時(shí),movable-view的移動(dòng)范圍必須包含movable-area(x軸方向和y軸方向分開(kāi)考慮)
但是要注意: movable-view必須在<movable-area/>組件中,并且必須是直接子節(jié)點(diǎn),否則不能移動(dòng)。
有這么一些屬性看微信小程序api
OK,這就是關(guān)于movable-area組件的一些基本概念的介紹,接下來(lái)我們實(shí)踐實(shí)踐。
2、頁(yè)面結(jié)構(gòu)
(1)這是我們html基本頁(yè)面結(jié)構(gòu),我主要來(lái)解釋一下movable-view的屬性起到了一些什么作用。
- 首先我們定義了direction方向?yàn)閔orizontal(橫向);
- 然后x就是偏移方向,這里我們給個(gè)默認(rèn)值為0;
- out-of-bounds定義當(dāng)超過(guò)可移動(dòng)區(qū)域后,還可以移動(dòng);
- damping為阻尼系數(shù),設(shè)置為100就是讓它移動(dòng)快點(diǎn);
- 最后綁定了一個(gè)在拖動(dòng)過(guò)程中觸發(fā)的事件、觸摸開(kāi)始和結(jié)束事件。
<movable-view damping="100" out-of-bounds="true" direction="horizontal" x="{{x}}" animation="false" bindchange="handleMovableChange" capture-bind:touchstart="handleTouchestart" capture-bind:touchend="handleTouchend">
代碼如下:
html
<view class="container">
<view class="main">
<view class="main_item">
<movable-area>
<movable-view damping="100" out-of-bounds="true" direction="horizontal" x="{{x}}" animation="false" bindchange="handleMovableChange" capture-bind:touchstart="handleTouchestart" capture-bind:touchend="handleTouchend">
<view class="main_item_content ">
左滑刪除
</view>
</movable-view>
</movable-area>
<view class="delete_btn " data-productIndex="{{index}} " bindtap="handleDeleteProduct ">刪除</view>
</view>
</view>
</view>
css:
.container {
padding: 0;
}
page {
padding: 0;
}
.main {
display: flex;
flex-direction: column;
align-items: center;
}
.main_item {
display: flex;
flex-direction: row;
background: #fff;
overflow: hidden;
}
movable-area {
width: 532rpx;
height: 201rpx;
background: #fff;
}
movable-view {
width: 716rpx;
height: 201rpx;
}
.main_item_content {
box-sizing: border-box;
height: 201rpx;
border-radius: 10rpx;
line-height: 201rpx;
color: #8e8e8e;
padding-left: 10px;
background: #eee;
}
.delete_btn {
width: 184rpx;
height: 201rpx;
background-color: #8FC31F;
border-top-right-radius: 10px;
border-bottom-right-radius: 10px;
color: #fff;
font-size: 28rpx;
text-align: center;
line-height: 201rpx;
}
js:
// pages/listDel/index.js
Page({
/**
* 頁(yè)面的初始數(shù)據(jù)
*/
data: {
// x軸方向的偏移
x: 0,
// 當(dāng)前x的值
currentX: 0
},
handleMovableChange: function(e) {
// this.data.currentX = e.detail.x;
this.data.currentX = e.detail.x;
},
handleTouchend: function(e) {
this.isMove = true;
if (this.data.currentX < -46) {
this.data.x = -92;
this.setData({
x: this.data.x
});
} else {
this.data.x = 0;
this.setData({
x: this.data.x
});
}
},
handleTouchestart: function(e) {},
/**
* 生命周期函數(shù)--監(jiān)聽(tīng)頁(yè)面加載
*/
onLoad: function(options) {
// let _this = this;
// wx.createSelectorQuery().selectAll('.delBtn ').boundingClientRect(function(rect) {
// _this.data.delWidth = rect[0].width;
// }).exec();
},
/**
* 生命周期函數(shù)--監(jiān)聽(tīng)頁(yè)面初次渲染完成
*/
onReady: function() {
},
/**
* 生命周期函數(shù)--監(jiān)聽(tīng)頁(yè)面顯示
*/
onShow: function() {
},
/**
* 生命周期函數(shù)--監(jiān)聽(tīng)頁(yè)面隱藏
*/
onHide: function() {
},
/**
* 生命周期函數(shù)--監(jiān)聽(tīng)頁(yè)面卸載
*/
onUnload: function() {
},
/**
* 頁(yè)面相關(guān)事件處理函數(shù)--監(jiān)聽(tīng)用戶下拉動(dòng)作
*/
onPullDownRefresh: function() {
},
/**
* 頁(yè)面上拉觸底事件的處理函數(shù)
*/
onReachBottom: function() {
},
/**
* 用戶點(diǎn)擊右上角分享
*/
onShareAppMessage: function() {
}
})
2:touchstart、touchmove 如果大家想了解的更清楚可以查看幫助文檔的哦
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
layui上傳圖片到服務(wù)器的非項(xiàng)目目錄下的方法
今天小編就為大家分享一篇layui上傳圖片到服務(wù)器的非項(xiàng)目目錄下的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09
Mozilla 表達(dá)式 __noSuchMethod__
這是一個(gè)很特殊的方法,但是其存在的意義很大。不過(guò)很可惜只有firefox支持了。一個(gè)簡(jiǎn)單的例子解釋一下它的用處2009-04-04
JS基于面向?qū)ο髮?shí)現(xiàn)的拖拽功能示例
這篇文章主要介紹了JS基于面向?qū)ο髮?shí)現(xiàn)的拖拽功能,涉及javascript面向?qū)ο笈c頁(yè)面元素動(dòng)態(tài)操作的相關(guān)技巧,需要的朋友可以參考下2016-12-12
JavaScript導(dǎo)航腳本判斷當(dāng)前導(dǎo)航
這篇文章主要介紹了JavaScript導(dǎo)航腳本判斷當(dāng)前導(dǎo)航的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07
關(guān)于moment.js的常用方法及使用說(shuō)明
這篇文章主要介紹了關(guān)于moment.js的常用方法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
詳解JavaScript中的鏈?zhǔn)秸{(diào)用
這篇文章主要介紹了JavaScript中的鏈?zhǔn)秸{(diào)用的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)JavaScript,感興趣的朋友可以了解下2020-11-11
使用getBoundingClientRect方法實(shí)現(xiàn)簡(jiǎn)潔的sticky組件的方法
本文介紹這種組件的實(shí)現(xiàn)思路,并提供一個(gè)同時(shí)支持將sticky元素固定在頂部或底部的具體實(shí)現(xiàn),由于這種組件在網(wǎng)站中非常常見(jiàn),所以有必要掌握它的實(shí)現(xiàn)方式,以便在有需要的時(shí)候基于它的思路寫(xiě)出功能更多的組件出來(lái)2016-03-03
JavaScript控制瀏覽器全屏及各種瀏覽器全屏模式的方法、屬性和事件
這篇文章主要介紹了JavaScript控制瀏覽器全屏及各種瀏覽器全屏模式的方法、屬性和事件的相關(guān)資料,需要的朋友可以參考下2015-12-12

