1 Star 0 Fork 0

林羽凡/小程序左滑删除效果

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
index.js 3.93 KB
一键复制 编辑 原始数据 按行查看 历史
Page({
data: {
delBtnWidth: 180,//滑动删除按钮宽度单位(rpx)
noCompleteData: [
{
title: '测试名称测试名称测试名测试名称测试名称测试名称测试名称称测试名称测试名称',
category: {
color: 'red',
category_name: '工作',
},
is_complete: 0,
create_time: '2022-07-24 00:00:00',
notice_time: '2022-07-24 00:00:00',
isComplete: false,
is_send_notice: 1,
txtStyle: '',
},
{
title: '测试名称1',
category: {
color: '#5ab58f',
category_name: '工作1',
},
is_complete: 0,
create_time: '2022-07-24 00:00:00',
notice_time: '2022-07-24 00:00:00',
isComplete: true,
is_send_notice: 1,
txtStyle: '',
}
]
},
onLoad: function () {
console.log('Welcome to Mini Code')
},
//滑动效果 2022.7.23
touchS: function (e) {
console.log('滑动', 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:0px";
} else if (disX > 0) {//移动距离大于0,文本层left值等于手指移动距离
txtStyle = "left:-" + disX + "px";
if (disX >= delBtnWidth) {
//控制手指移动距离最大值为删除按钮的宽度
txtStyle = "left:-" + delBtnWidth + "px";
}
}
//获取手指触摸的是哪一项
var index = e.currentTarget.dataset.index;
var list = this.data.noCompleteData;
if (index >= 0) {
list[index].txtStyle = txtStyle;
//更新列表的状态
this.setData({
noCompleteData: list
});
}
}
},
touchE: function (e) {
console.log('滑动结束', 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 ? "left:-" + delBtnWidth + "px" : "left:0px";
//获取手指触摸的是哪一项
var index = e.currentTarget.dataset.index;
var list = this.data.noCompleteData;
if (index >= 0) {
list[index].txtStyle = txtStyle;
list.forEach((e, k) => {
if (k != index) {
e.txtStyle = 'left:0px';
}
})
//更新列表的状态
this.setData({
noCompleteData: list
});
}
}
},
//获取元素自适应后的实际宽度
getEleWidth: function (w) {
var real = 0;
try {
var res = tt.getSystemInfoSync().windowWidth;
var scale = (750 / 2) / (w / 2);
//以宽度750px设计稿做宽度的自适应
real = Math.floor(res / scale);
return real;
} catch (e) {
return false;
// Do something when catch error
}
},
initEleWidth: function () {
var delBtnWidth = this.getEleWidth(this.data.delBtnWidth);
this.setData({
delBtnWidth: delBtnWidth
});
},
//修改待办内容 2022.7.23
async modifyTodo(e) {
console.log('点击了修改待办')
// this.editTodo(index, content_id);
},
//点击删除按钮事件
async delTodo(e) {
console.log('点击了删除待办', e)
//以下是删除逻辑
},
//滑动效果 2022.7.23
})
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/linyufan/applet-left-slide-delete.git
git@gitee.com:linyufan/applet-left-slide-delete.git
linyufan
applet-left-slide-delete
小程序左滑删除效果
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385