今天我们说下微信小程序左滑删除效果的实现,现在市场上很多APP都在使用这个效果,一个listView页面,向左滑动一条item时,右侧会出现一个删除或者其他的选项,用户体验非常好,操作起来十分方便,今天我们使用微信小程序来实现这个效果.......

先看效果
要实现的效果:
1,当向左滑动时,item跟随手指像左移动,同时右侧出现两个可点击的按钮
2,当滑动距离大于按钮宽度一半松开手指时,item自动滑动到左侧显示出按钮,小于一半时item自动回到原来的位置,隐藏按钮。
思路:
1,首先页面每个item分为上下两层,上面一层放置正常内容,下面一层放置左滑显示出的按钮,这个可以使用z-index来实现分层。
2,item上层使用绝对定位,我们操纵 left 属性的值来实现像左移动。
3,我们通过微信小程序api提供的touch对象和3个有关手指触摸的函数(touchstart,touchmove,touchend)来实现item随手指移动。
由于比较简单,所以直接上代码了,详细的讲解都在代码的注释中,首先看下页面的布局
<!--这是一个item的代码>
<view class="address-item" wx:for="{{addressList}}" >
<!--这里绑定了刚才说的3个函数分别为 touchS,touchM touchE-->
<!--这里注意这个 style="{{item.txtStyle}}" ,这是我们一会再js中 将要设置的样式 -->
<view style="{{item.txtStyle}}" bindtouchstart="touchS" bindtouchmove="touchM" bindtouchend="touchE" data-index="{{index}}" class="address-item-top" >
<!--中间无关的代码已被我删除-->
</view>
<!--这里是左滑按钮部分----start-->
<view bindtap="delItem" class="posit">
<view class="editor" data-addressid="{{item.address.ID}}" catchtap="setDefaultAddress">设为默认地址</view>
<view class="del" data-addressid="{{item.address.ID}}" data-index="{{index}}" catchtap="delAddress">删除</view>
</view>
<!--这里是左滑按钮部分----end-->
</view>
再看js代码
Page({
data:{
addressList:[{"Contact":"钟诚","Mobile":13888888888,"Address":"江苏省苏州市工业园区创意产业园"},
{"Contact":"凹凸曼","Mobile":13666666666,"Address":"江苏省苏州市工业园区独墅湖体育馆"},
{"Contact":"图傲曼","Mobile":13666666666,"Address":"江苏省苏州市工业园区独墅湖体育馆"}],
editIndex:0,
delBtnWidth:150//删除按钮宽度单位(rpx)
},
onLoad:function(options){},
//手指刚放到屏幕触发
touchS:function(e){
console.log("touchS"+e);
//判断是否只有一个触摸点
if(e.touches.length==1){
this.setData({
//记录触摸起始位置的X坐标
startX:e.touches[0].clientX
});
}
},
//触摸时触发,手指在屏幕上每移动一次,触发一次
touchM:function(e){
console.log("touchM:"+e);
var that = this
if(e.touches.length==1){
//记录触摸点位置的X坐标
var moveX = e.touches[0].clientX;
//计算手指起始点的X坐标与当前触摸点的X坐标的差值
var disX = that.data.startX - moveX;
//delBtnWidth 为右侧按钮区域的宽度
var delBtnWidth = that.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";
}
}
//获取手指触摸的是哪一个item
var index = e.currentTarget.dataset.index;
var list = that.data.addressList;
//将拼接好的样式设置到当前item中
list[index].txtStyle = txtStyle;
//更新列表的状态
this.setData({
addressList:list
});
}
},
touchE:function(e){
console.log("touchE"+e);
var that = this
if(e.changedTouches.length==1){
//手指移动结束后触摸点位置的X坐标
var endX = e.changedTouches[0].clientX;
//触摸开始与结束,手指移动的距离
var disX = that.data.startX - endX;
var delBtnWidth = that.data.delBtnWidth;
//如果距离小于删除按钮的1/2,不显示删除按钮
var txtStyle = disX > delBtnWidth/2 ? "left:-"+delBtnWidth+"px":"left:0px";
//获取手指触摸的是哪一项
var index = e.currentTarget.dataset.index;
var list = that.data.addressList;
list[index].txtStyle = txtStyle;
//更新列表的状态
that.setData({
addressList:list
});
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# 小程序
# 滑动删除效果
# 微信小程序
# 左滑删除
# 微信小程序 向左滑动删除功能的实现
# 微信小程序 侧滑删除(左滑删除)
# 微信小程序实现左滑修改、删除功能
# 微信小程序列表中item左滑删除功能
# 微信小程序uniapp实现左滑删除效果(完整代码)
# 微信小程序实现左滑动删除效果
# 微信小程序实现收货地址左滑删除
# 微信小程序左滑删除功能开发案例详解
# 微信小程序左滑删除实现代码实例
# 微信小程序实现左滑删除效果源码
# 苏州市
# 来实现
# 江苏省
# 的是
# 都在
# 这是
# 已被
# 设为
# 其他的
# 这是一个
# 只有一个
# 非常好
# 可以使用
# 分别为
# 再看
# 定了
# 会再
# 先看
# 使用这个
# 两层
相关文章:
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
建站之星展会模板:智能建站与自助搭建高效解决方案
如何在阿里云通过域名搭建网站?
高端网站建设与定制开发一站式解决方案 中企动力
太平洋网站制作公司,网络用语太平洋是什么意思?
php json中文编码为null的解决办法
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
linux top下的 minerd 木马清除方法
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
网页设计网站制作软件,microsoft office哪个可以创建网页?
如何用景安虚拟主机手机版绑定域名建站?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
如何自定义建站之星模板颜色并下载新样式?
IOS倒计时设置UIButton标题title的抖动问题
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
建站三合一如何选?哪家性价比更高?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
简单实现Android验证码
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
常州企业网站制作公司,全国继续教育网怎么登录?
制作网站公司那家好,网络公司是做什么的?
如何通过万网虚拟主机快速搭建网站?
建站之星如何优化SEO以实现高效排名?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
香港服务器WordPress建站指南:SEO优化与高效部署策略
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
Swift中switch语句区间和元组模式匹配
手机网站制作与建设方案,手机网站如何建设?
如何在阿里云香港服务器快速搭建网站?
如何快速搭建高效香港服务器网站?
北京网站制作公司哪家好一点,北京租房网站有哪些?
详解jQuery中基本的动画方法
郑州企业网站制作公司,郑州招聘网站有哪些?
如何在Ubuntu系统下快速搭建WordPress个人网站?
在线教育网站制作平台,山西立德教育官网?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?
大同网页,大同瑞慈医院官网?
如何在宝塔面板中修改默认建站目录?
如何通过cPanel快速搭建网站?
存储型VPS适合搭建中小型网站吗?
为什么Go需要go mod文件_Go go mod文件作用说明
如何通过老薛主机一键快速建站?
香港服务器部署网站为何提示未备案?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
*请认真填写需求信息,我们会在24小时内与您取得联系。