中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信小程序如何實現收貨地址左滑刪除

發布時間:2020-07-23 15:33:09 來源:億速云 閱讀:242 作者:小豬 欄目:web開發

這篇文章主要為大家展示了微信小程序如何實現收貨地址左滑刪除,內容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

效果:

微信小程序如何實現收貨地址左滑刪除

思路:

一、用相對定位和絕對定位,列表放在上層,刪除按鈕放在下層(z-index不要為負)。

二、觸摸事件判斷用戶是否左滑,有 bindtouchstart,bindtouchmove,bindtouchend 三個觸摸事件。

1、bindtouchstart 記錄觸摸開始的點。開始點的坐標在 e.touches[0] 中,這是相對于屏幕的,也就是以屏幕左上方為原點。

2、bindtouchmove 記錄觸摸移動時的點。同上。

3、bindtouchmove 記錄觸摸結束的點。結束點的坐標在 e.changedTouches[0] 中。

通過1、2方法,獲取到觸摸開始點、移動距離,就可以讓列表層隨觸摸點左右移動;

通過3方法,獲取最終點,判斷與開始點的距離,如果這個距離小于刪除按鈕的一半,則還原列表層

代碼:

1、wxml

<view wx:for="{{address}}" style='position: relative;'>
 <!-- 列表層 -->
 <view class='list' style='{{item.txtStyle}}' bindtouchstart="touchS" bindtouchmove="touchM" bindtouchend="touchE" data-index='{{index}}'>
 <!-- 收貨信息 -->
 <view class='info' bindtap='select_addr' data-id="{{item.id}}">
 <view>
 {{item.name}} 
 <span class="phone">{{item.phone}}</span>
 <span wx:if="{{item.default == 1}}" class='def'>默認</span>
 </view>
 <view>
 {{item.province}} {{item.address}}
 </view>
 </view>
 <!-- 編輯圖標 -->
 <view class='edit' bindtap='edit' data-id='{{item.id}}' >
 <image src='/image/edit.png'></image>
 </view>
 </view>
 <!-- 刪除按鈕 -->
 <view class="delete" data-id="{{item.id}}" data-index='{{index}}' bindtap="delItem" >刪除</view>
</view>
 
<view class='add' bindtap='add'>添加地址</view>

2、wxss

page{
 background-color: #F0EFF5;
}
.list{
 position: relative;
 z-index: 2;
 overflow: hidden;
 background-color: white;
 margin-top: 2rpx;
 padding: 25rpx;
 display: flex;
 align-items: center;
 justify-content:space-between;
 min-height: 150rpx;
}
.delete{
 position: absolute;
 top:0rpx;
 background-color: #e64340;
 width: 180rpx;
 text-align: center;
 z-index: 1;
 right: 0;
 color: #fff;
 height: 100%;
 display: flex;
 align-items: center;
 justify-content: center;
}
.info{
 display: flex;
 flex-direction: column;
 align-items: flex-start;
}
.info view:first-child{
 text-align: center;
 font-size: 35rpx;
 margin-bottom: 10rpx;
}
.info view:nth-child(2){
 font-size: 30rpx;
 margin-bottom: 10rpx;
}
.def{
 font-size: 30rpx;
 border:1rpx solid red;
 border-radius: 5rpx;
 padding:0 10rpx;
 color: red;
 margin-right: 10rpx;
}
.phone{
 color:gray;font-size:30rpx;margin: 0 20rpx;
}
.edit{
 padding:40rpx;
}
.edit image{
 width: 40rpx;
 height: 40rpx;
 margin-left:10rpx;
}
.add{
 width: 650rpx;
 border: 2rpx solid gray;
 height: 100rpx;
 line-height: 100rpx;
 text-align: center;
 font-size: 30rpx;
 border-radius: 10rpx;
 position: fixed;
 bottom: 50rpx;
 left: 50rpx;
 background-color: white;
}

3、JS

Page({
 data: {
 address:[
 {
 id: "1",
 address: "1單元222號",
 name: "啦啦啦",
 default:"1",
 phone: "12222223333",
 province: "河北省 石家莊市 長安區",
 txtStyle: "",
 },
 {
 id: "2",
 address: "2幢2樓222號",
 name: "嚯嚯嚯",
 default: "0",
 phone: "12345678900",
 province: "浙江省 杭州市 市轄區",
 txtStyle: "",
 },
 {
 id: "3",
 address: "1幢1單元",
 name: "哈哈哈",
 default: "0",
 phone: "18208350499",
 province: "河北省 石家莊市 新華區",
 txtStyle: "",
 }
 ],
 delBtnWidth: 180
 },
 
 onLoad: function (options) {
 //獲取收貨地址 省略
 },
 
 edit: function (e) {
 //編輯收貨地址 省略
 },
 
 add: function () {
 //增加收貨地址 省略
 },
 
 delItem: function (e) {
 var id = e.currentTarget.dataset.id;
 var index = e.currentTarget.dataset.index;
 this.data.address.splice(index, 1);
 this.setData({
 address: this.data.address
 })
 },
 
 touchS: function (e) {
 if (e.touches.length == 1) {
 this.setData({
 //設置觸摸起始點水平方向位置
 startX: e.touches[0].clientX
 });
 }
 },
 
 touchM: function (e) {
 if (e.touches.length == 1) {
 //手指移動時水平方向位置
 var moveX = e.touches[0].clientX;
 //手指起始點位置與移動期間的差值
 var disX = this.data.startX - moveX;
 var delBtnWidth = this.data.delBtnWidth;
 var txtStyle = "";
 if (disX == 0 || disX < 0) {//如果移動距離小于等于0,文本層位置不變
 txtStyle = "left:0rpx";
 } else if (disX > 0) {//移動距離大于0,文本層left值等于手指移動距離
 txtStyle = "left:-" + disX + "rpx";
 if (disX >= delBtnWidth) {
  //控制手指移動距離最大值為刪除按鈕的寬度
  txtStyle = "left:-" + delBtnWidth + "rpx";
 }
 }
 //獲取手指觸摸的是哪一項
 var index = e.currentTarget.dataset.index;
 var list = this.data.address;
 list[index]['txtStyle'] = txtStyle;
 //更新列表的狀態
 this.setData({
 address: list
 });
 }
 },
 touchE: function (e) {
 if (e.changedTouches.length == 1) {
 //手指移動結束后水平位置
 var endX = e.changedTouches[0].clientX;
 //觸摸開始與結束,手指移動的距離
 var disX = this.data.startX - endX;
 var delBtnWidth = this.data.delBtnWidth;
 //如果距離小于刪除按鈕的1/2,不顯示刪除按鈕
 var txtStyle = disX > delBtnWidth / 2 &#63; "left:-" + delBtnWidth + "rpx" : "left:0rpx";
 //獲取手指觸摸的是哪一項
 var index = e.currentTarget.dataset.index;
 var list = this.data.address;
 var del_index = '';
 disX > delBtnWidth / 2 &#63; del_index = index : del_index = '';
 list[index].txtStyle = txtStyle;
 //更新列表的狀態
 this.setData({
 address: list,
 del_index: del_index
 });
 }
 },
})

以上就是關于微信小程序如何實現收貨地址左滑刪除的內容,如果你們有學習到知識或者技能,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南投县| 精河县| 新平| 潜山县| 灌南县| 太谷县| 乌鲁木齐县| 中宁县| 苍溪县| 平度市| 遵义县| 灌南县| 大渡口区| 启东市| 庆云县| 牙克石市| 兴义市| 澜沧| 资溪县| 师宗县| 广平县| 鄂州市| 防城港市| 外汇| 英吉沙县| 图木舒克市| 盘山县| 平定县| 奉贤区| 苏尼特左旗| 蒙阴县| 藁城市| 张掖市| 巩义市| 林西县| 庄浪县| 商丘市| 云林县| 博罗县| 手游| 京山县|