微信小程序左滑删除实现代码实例
这篇文章主要介绍了微信小程序左滑删除实现代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
{{item.title}} {{item.create_time}} 删除
.touch-item{
display:flex;
justify-content:space-between;
width:100%;
overflow:hidden;
margin-bottom:10rpx;
background:#f5f5f5;
height:216rpx;
}
.content{
width:100%;
margin-right:0;
-webkit-transition:all0.4s;
transition:all0.4s;
-webkit-transform:translateX(90px);
transform:translateX(90px);
margin-left:-90px;
}
.del{
width:90px;
display:flex;
flex-direction:column;
align-items:center;
justify-content:center;
color:#fff;
-webkit-transform:translateX(90px);
transform:translateX(90px);
-webkit-transition:all0.4s;
transition:all0.4s;
font-size:35rpx;
}
.touch-move-active.content,.touch-move-active.del{
-webkit-transform:translateX(0);
transform:translateX(0);
}
//pages/touch/touch.js
Page({
/**
*页面的初始数据
*/
data:{
startX:0,
//开始坐标
startY:0,
page:1,
list:[{
id:0,
title:'标题1',
create_time:'2019-09-06'
},
{
id:1,
title:'标题2',
create_time:'2019-09-06'
},
{
id:2,
title:'标题3',
create_time:'2019-09-06'
},
]
},
touchE:function(e){
//console.log(e);
varthat=this
if(e.changedTouches.length==1){
//手指移动结束后触摸点位置的X坐标
varendX=e.changedTouches[0].clientX;
//触摸开始与结束,手指移动的距离
vardisX=that.data.startX-endX;
vardelBtnWidth=that.data.delBtnWidth;
//如果距离小于删除按钮的1/2,不显示删除按钮
vartxtStyle=disX>delBtnWidth/2?"left:-"+delBtnWidth+"rpx":"left:0rpx";
//获取手指触摸的是哪一项
varindex=e.currentTarget.dataset.index;
varlist=that.data.list;
list[index].txtStyle=txtStyle;
//更新列表的状态
that.setData({
list:list
});
}
},
//手指触摸动作开始记录起点X坐标
touchstart:function(e){
//开始触摸时重置所有删除
this.data.list.forEach(function(v,i){
if(v.isTouchMove)//只操作为true的
v.isTouchMove=false;
})this.setData({
startX:e.changedTouches[0].clientX,
startY:e.changedTouches[0].clientY,
list:this.data.list
})
},
//滑动事件处理
touchmove:function(e){
varthat=this,
index=e.currentTarget.dataset.index,
//当前索引
startX=that.data.startX,
//开始X坐标
startY=that.data.startY,
//开始Y坐标
touchMoveX=e.changedTouches[0].clientX,
//滑动变化坐标
touchMoveY=e.changedTouches[0].clientY,
//滑动变化坐标
//获取滑动角度
angle=that.angle({
X:startX,
Y:startY
},
{
X:touchMoveX,
Y:touchMoveY
});
that.data.list.forEach(function(v,i){
v.isTouchMove=false
//滑动超过30度角return
if(Math.abs(angle)>30)return;
if(i==index){
if(touchMoveX>startX)//右滑
v.isTouchMove=false
else//左滑
v.isTouchMove=true
}
})
//更新数据
that.setData({
list:that.data.list
})
},
/**
*计算滑动角度
*@param{Object}start起点坐标
*@param{Object}end终点坐标
*/
angle:function(start,end){
var_X=end.X-start.X,
_Y=end.Y-start.Y
//返回角度/Math.atan()返回数字的反正切值
return360*Math.atan(_Y/_X)/(2*Math.PI);
},
/**
*生命周期函数--监听页面加载
*/
onLoad:function(options){
},
/**
*生命周期函数--监听页面初次渲染完成
*/
onReady:function(){
},
/**
*生命周期函数--监听页面显示
*/
onShow:function(){
},
/**
*生命周期函数--监听页面隐藏
*/
onHide:function(){
},
/**
*生命周期函数--监听页面卸载
*/
onUnload:function(){
},
/**
*页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh:function(){
},
/**
*页面上拉触底事件的处理函数
*/
onReachBottom:function(){
},
/**
*用户点击右上角分享
*/
onShareAppMessage:function(){
}
})
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。