微信小程序 侧滑删除(左滑删除)

发布时间 - 2026-01-11 01:15:20    点击率:

微信小程序 侧滑删除(左滑删除)

如图所示,demo是小程序的侧滑删除,这个是我在别人写的例子的基础上修改的。代码如下

js文件代码:

// pages/leftSwiperDel/index.js 
 
var initdata = function (that) { 
 var list = that.data.list 
 for (var i = 0; i < list.length; i++) { 
  list[i].txtStyle = "" 
 } 
 that.setData({ list: list }) 
} 
 
Page({ 
 data: { 
  delBtnWidth: 180,//删除按钮宽度单位(rpx) 
  list: [ 
   { 
    txtStyle: "", 
    icon: "/images/qcm.png", 
    txt: "指尖快递" 
   }, 
   { 
    txtStyle: "", 
    icon: "/images/qcm.png", 
    txt: "指尖快递" 
   }, 
   { 
    txtStyle: "", 
    icon: "/images/qcm.png", 
    txt: "指尖快递" 
   }, 
   { 
    txtStyle: "", 
    icon: "/images/qcm.png", 
    txt: "指尖快递" 
   }, 
   { 
    txtStyle: "", 
    icon: "/images/qcm.png", 
    txt: "指尖快递" 
   }, 
   { 
    txtStyle: "", 
    icon: "/images/qcm.png", 
    txt: "指尖快递" 
   }, 
   { 
    txtStyle: "", 
    icon: "/images/qcm.png", 
    txt: "指尖快递" 
   }, 
   { 
    txtStyle: "", 
    icon: "/images/qcm.png", 
    txt: "指尖快递" 
   }, 
   { 
    txtStyle: "", 
    icon: "/images/qcm.png", 
    txt: "指尖快递" 
   }, 
   { 
    txtStyle: "", 
    icon: "/images/qcm.png", 
    txt: "指尖快递" 
   }, 
   { 
    txtStyle: "", 
    icon: "/images/qcm.png", 
    txt: "指尖快递" 
   }, 
 
  ] 
 }, 
 onLoad: function (options) { 
  // 页面初始化 options为页面跳转所带来的参数 
  this.initEleWidth(); 
 }, 
 onReady: function () { 
  // 页面渲染完成 
 }, 
 onShow: function () { 
  // 页面显示 
 }, 
 onHide: function () { 
  // 页面隐藏 
 }, 
 onUnload: function () { 
  // 页面关闭 
 }, 
 touchS: function (e) { 
  if (e.touches.length == 1) { 
   this.setData({ 
    //设置触摸起始点水平方向位置 
    startX: e.touches[0].clientX 
   }); 
  } 
 }, 
 touchM: function (e) { 
  var that = this 
  initdata(that) 
  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.target.dataset.index; 
   var list = this.data.list; 
   list[index].txtStyle = txtStyle; 
   //更新列表的状态 
   this.setData({ 
    list: 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 ? "left:-" + delBtnWidth + "px" : "left:0px"; 
   //获取手指触摸的是哪一项 
   var index = e.target.dataset.index; 
   var list = this.data.list; 
   list[index].txtStyle = txtStyle; 
   //更新列表的状态 
   this.setData({ 
    list: list 
   }); 
  } 
 }, 
 //获取元素自适应后的实际宽度 
 getEleWidth: function (w) { 
  var real = 0; 
  try { 
   var res = wx.getSystemInfoSync().windowWidth; 
   var scale = (750 / 2) / (w / 2);//以宽度750px设计稿做宽度的自适应 
   // console.log(scale); 
   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 
  }); 
 }, 
 //点击删除按钮事件 
 delItem: function (e) { 
  var that = this 
  wx.showModal({ 
   title: '提示', 
   content: '是否删除?', 
   success: function (res) { 
    if (res.confirm) { 
     //获取列表中要删除项的下标 
     var index = e.target.dataset.index; 
     var list = that.data.list; 
     //移除列表中下标为index的项 
     list.splice(index, 1); 
     //更新列表的状态 
     that.setData({ 
      list: list 
     }); 
    } else { 
     initdata(that) 
    } 
   } 
  }) 
 
 } 
 
}) 

wxss文件代码:

/* pages/leftSwiperDel/index.wxss */ 
view{ 
  box-sizing: border-box; 
} 
.item-box{ 
  width: 700rpx; 
  margin: 0 auto; 
  padding:40rpx 0; 
} 
.items{ 
  width: 100%; 
} 
.item{ 
  position: relative; 
  border-top: 2rpx solid #eee; 
  height: 120rpx; 
  line-height: 120rpx; 
  overflow: hidden; 
} 
.item:last-child{ 
  border-bottom: 2rpx solid #eee; 
} 
.inner{ 
  position: absolute; 
  top:0; 
} 
.inner.txt{ 
  background-color: #fff; 
  width: 100%; 
  z-index: 5; 
  padding:0 10rpx; 
  transition: left 0.2s ease-in-out; 
  white-space:nowrap; 
  overflow:hidden; 
  text-overflow:ellipsis; 
} 
.inner.del{ 
  background-color: #e64340; 
  width: 180rpx;text-align: center; 
  z-index: 4; 
  right: 0; 
  color: #fff 
} 
.item-icon{ 
  width: 64rpx; 
  vertical-align: middle; 
  margin-right: 16rpx 
} 
.thumb{ 
  width: 200px; 
  height: 200px; 
  -webkit-overflow-scrolling: touch; 
  overflow: scroll; 
} 

wxml文件代码:

<view class="item-box"> 
 <view class="items"> 
  <view wx:for="{{list}}" wx:key="{{index}}" class="item"> 
   <view bindtouchstart="touchS" bindtouchmove="touchM" bindtouchend="touchE" data-index="{{index}}" style="{{item.txtStyle}}" class="inner txt"> 
   <image class="item-icon" mode="widthFix" src="{{item.icon}}"></image>{{index}}{{item.txt}}</view> 
   <view data-index="{{index}}" bindtap = "delItem" class="inner del">删除</view> 
  </view> 
 </view> 
</view> 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# 微信小程序  # 侧滑删除(左滑删除)  # 小程序  # 侧滑删除  # 微信小程序 向左滑动删除功能的实现  # 微信小程序左滑删除效果的实现代码  # 微信小程序实现左滑修改、删除功能  # 微信小程序列表中item左滑删除功能  # 微信小程序uniapp实现左滑删除效果(完整代码)  # 微信小程序实现左滑动删除效果  # 微信小程序实现收货地址左滑删除  # 微信小程序左滑删除功能开发案例详解  # 微信小程序左滑删除实现代码实例  # 微信小程序实现左滑删除效果源码  # 的是  # 自适应  # 哪一项  # 我在  # 起始点  # 基础上  # 希望能  # 跳转  # 谢谢大家  # 中要  # 值为  # 移除  # 如图所示  # 结束后  # 列表中  # gt  # px  # Math  # floor  # target 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何正确下载安装西数主机建站助手?  如何为不同团队 ID 动态生成多个“认领值班”按钮  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  非常酷的网站设计制作软件,酷培ai教育官方网站?  想要更高端的建设网站,这些原则一定要坚持!  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  WordPress 子目录安装中正确处理脚本路径的完整指南  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  简单实现Android文件上传  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  如何在阿里云部署织梦网站?  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  如何快速生成高效建站系统源代码?  如何用VPS主机快速搭建个人网站?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  *服务器网站为何频现安全漏洞?  详解vue.js组件化开发实践  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  成都网站制作公司哪家好,四川省职工服务网是做什么用?  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  Laravel怎么调用外部API_Laravel Http Client客户端使用  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  昵图网官网入口 昵图网素材平台官方入口  Laravel如何使用Collections进行数据处理?(实用方法示例)  智能起名网站制作软件有哪些,制作logo的软件?  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  Python图片处理进阶教程_Pillow滤镜与图像增强  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  Python文件异常处理策略_健壮性说明【指导】  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  香港服务器选型指南:免备案配置与高效建站方案解析  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  大连 网站制作,大连天途有线官网?  如何实现javascript表单验证_正则表达式有哪些实用技巧  php 三元运算符实例详细介绍  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  Bootstrap CSS布局之列表  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?