微信小程序列表中item左滑删除功能


Posted in Javascript onNovember 07, 2018

第一步:把想要的两种样式写出来

1.正常显示的样式

微信小程序列表中item左滑删除功能

css:

.box{
 height: 100%;
}
.item{
 position:relative;
 top: 0;
 width: 100%;
 height: 150rpx;
 border-bottom: #d9d9d9 solid 1rpx;
 padding: 0;
}
.item .content{
 background-color: #ffffff;
 height: 100%;
 position: relative;
 left: 0;
 width: 100%;
 transition: all 0.3s;
}
.item .del-button {
 position: absolute;
 right: -140rpx;
 width: 140rpx;
 height: 100%;
 background-color: #df3448;
 color: #fff;
 top: 0;
 text-align: center;
 display: flex;
 justify-content: center;
 align-items: center;
 transition: all 0.3s;
 font-size: 24rpx;
}

xwml:

<view class="box">
 <view class="item {{status ? '' :'active'}}">
  <view class="content">显示正常内容</view>
  <view class="del-button">删除</view>
 </view>
</view>

2.显示删除按钮

微信小程序列表中item左滑删除功能

.item.active .content{
 left: -140rpx;
}
.item.active .del-button{
 right: 0;
}

同时在js中控制样式是否active

data: {
  status:false //true为正常显示,false为显示删除按钮
 },

第二步:绑定事件

其实此时可以绑定bindtap事件,来切换active的状态,点击一下是“显示正常内容”,再点击一下是“删除”。然后,现在把点击事件改成touch并向左move之后再触发,就很好理解了。(样式中,已经提前写好的transition: all 0.3s;就是为了使两个状态之间有个过渡)

微信小程序提供了两个事件可以使用,一个是bindtouchstart,通过这个事件我们可以获得用户刚点击(手指还未抬起)时的坐标。

touchS(e) {
 // 获得起始坐标
 this.startX = e.touches[0].clientX;
 this.startY = e.touches[0].clientY;
},

还有一个是bindtouchmove,我们可以一直获取当前的坐标(用户手指一直在屏幕上滑动时)。因此,我们只需要得到x轴上的移动的前后坐标相减是正数,就是向左移动。

touchM(e) {
  // 获得当前坐标
  this.currentX = e.touches[0].clientX;
  this.currentY = e.touches[0].clientY;
  const x = this.startX - this.currentX; //横向移动距离
  const y = Math.abs(this.startY - this.currentY); //纵向移动距离,若向左移动有点倾斜也可以接受
  if (x > 35 && y < 110) {
  //向左滑是显示删除
   this.setData({
    status: false
   })
  } else if (x < -35 && y < 110) {
  //向右滑
   this.setData({
    status: true
   })
  }
 },

然后绑定到Item上

<view class="box">
 <view class="item {{status ? '' :'active'}}">
  <view class="content" bindtouchstart="touchS" bindtouchmove="touchM">显示正常内容</view>
  <view class="del-button">删除</view>
 </view>
</view>

最后再在删除的view里bindtap一个删除方法即可删除。

以上是最简版的效果,还需很多优化要自行添加。

总结

以上所述是小编给大家介绍的微信小程序列表中item左滑删除功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript DOM学习第四章 getElementByTagNames
Feb 19 Javascript
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
Jul 26 Javascript
js replace正则表达式应用案例讲解
Jan 17 Javascript
js实现图片漂浮效果的方法
Mar 02 Javascript
PHP结合jQuery实现的评论顶、踩功能
Jul 22 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
Sep 30 Javascript
常见的javascript跨域通信方法
Dec 31 Javascript
JS数组去重的6种方法完整实例
Dec 08 Javascript
微信小程序实现张图片合成为一张并下载
Jul 16 Javascript
JS实现页面数据懒加载
Feb 13 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
Feb 28 Javascript
用几道面试题来看JavaScript执行机制
Apr 30 Javascript
Angular 实现输入框中显示文章标签的实例代码
Nov 07 #Javascript
VueCli3构建TS项目的方法步骤
Nov 07 #Javascript
vue调试工具vue-devtools安装及使用方法
Nov 07 #Javascript
vue+webpack中配置ESLint
Nov 07 #Javascript
利用jqgrid实现上移下移单元格功能
Nov 07 #Javascript
React 源码中的依赖注入方法
Nov 07 #Javascript
监听angularJs列表数据是否渲染完毕的方法示例
Nov 07 #Javascript
You might like
PHP 彩色文字实现代码
2009/06/29 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
Laravel中的Blade模板引擎示例详解
2017/10/10 PHP
php快速导入大量数据的实例方法
2019/09/23 PHP
Windows服务器中PHP如何安装redis扩展
2019/09/27 PHP
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
2010/09/19 Javascript
JS 加入收藏夹的代码(主流浏览器通用)
2013/05/13 Javascript
基于jquery的网站幻灯片切换效果焦点图代码
2013/09/15 Javascript
JS对话框_JS模态对话框showModalDialog用法总结
2014/01/11 Javascript
node.js中的fs.readFileSync方法使用说明
2014/12/15 Javascript
浅谈document.write()输出样式
2015/05/07 Javascript
JavaScript实现非常简单实用的下拉菜单效果
2015/08/27 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
谈谈对JavaScript原生拖放的深入理解
2016/09/20 Javascript
JavaScript 实现的checkbox经典实例分享
2016/10/16 Javascript
bootstrap多种样式进度条展示
2016/12/20 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
详解微信小程序canvas圆角矩形的绘制的方法
2018/08/22 Javascript
jQuery动态操作表单示例【基于table表格】
2018/12/06 jQuery
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
2019/10/25 Javascript
[04:37]DOTA2英雄梦之声Vol20发条
2014/06/20 DOTA
简单理解Python中的装饰器
2015/07/31 Python
动态规划之矩阵连乘问题Python实现方法
2017/11/27 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
python实现将文件夹内的每张图片批量分割成多张
2019/07/22 Python
如何基于Python制作有道翻译小工具
2019/12/16 Python
HTML5 Canvas API中drawImage()方法的使用实例
2016/03/25 HTML / CSS
澳大利亚在线购买儿童玩具:Toy Universe
2017/12/28 全球购物
ghd法国官方网站:英国最受欢迎的美发工具品牌
2019/04/18 全球购物
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
2012/05/23 面试题
WSDL的操作类型主要有几种
2013/07/19 面试题
医学检验专业个人求职信范文
2013/12/04 职场文书
民警个人对照检查剖析材料
2014/09/17 职场文书
2014年社区居委会主任重阳节讲话稿
2014/09/25 职场文书
2016中秋节问候语
2015/11/11 职场文书