微信小程序列表中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 相关文章推荐
兼容FF和IE的动态table示例自写
Oct 21 Javascript
ExtJS如何设置与获取radio控件的选取状态
Jan 22 Javascript
JavaScript Function函数类型介绍
Apr 08 Javascript
jQuery+ajax实现无刷新级联菜单示例
May 21 Javascript
vue指令只能输入正数并且只能输入一个小数点的方法
Jun 08 Javascript
Angular使用cli生成自定义文件、组件的方法
Sep 04 Javascript
浅谈JavaScript_DOM学习篇_图片切换小案例
Mar 19 Javascript
js实现的格式化数字和金额功能简单示例
Jul 30 Javascript
vue控制多行文字展开收起的实现示例
Oct 11 Javascript
vue - vue.config.js中devServer配置方式
Oct 30 Javascript
node.js事件轮询机制原理知识点
Dec 22 Javascript
Node.js操作MongoDB数据库实例分析
Jan 19 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
星际原理概述
2020/03/04 星际争霸
php字符串替换函数substr_replace()用法实例
2015/03/17 PHP
Javascript学习笔记1 数据类型
2010/01/11 Javascript
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
JavaScript实现将文本框的值插入指定位置的方法
2015/08/13 Javascript
基于jQuery日历插件制作日历
2016/03/11 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
2016/12/18 Javascript
基于Javascript倒计时效果
2016/12/22 Javascript
使用vue实现点击按钮滑出面板的实现代码
2017/01/10 Javascript
VUE axios发送跨域请求需要注意的问题
2017/07/06 Javascript
深入探究AngularJs之$scope对象(作用域)
2017/07/20 Javascript
react-native使用react-navigation进行页面跳转导航的示例
2017/09/07 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
jQuery属性选择器用法实例分析
2019/06/28 jQuery
NodeJS有难度的面试题(能答对几个)
2019/10/09 NodeJs
关于vue.js中实现方法内某些代码延时执行
2019/11/14 Javascript
python使用clear方法清除字典内全部数据实例
2015/07/11 Python
python 异常处理总结
2016/10/18 Python
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
2017/07/06 Python
python验证码识别的示例代码
2017/09/21 Python
Python微信公众号开发平台
2018/01/25 Python
python破解zip加密文件的方法
2018/05/31 Python
Python常见排序操作示例【字典、列表、指定元素等】
2018/08/15 Python
Python功能点实现:函数级/代码块级计时器
2019/01/02 Python
python Tornado框架的使用示例
2020/10/19 Python
使用HTML5 Canvas API中的clip()方法裁剪区域图像
2016/03/25 HTML / CSS
美国购买体育、音乐会和剧院门票网站:SelectATicket
2019/09/08 全球购物
英国家居装饰品、户外家具和玻璃器皿购物网站:Rinkit.com
2019/11/04 全球购物
委托公证书
2014/04/08 职场文书
学雷锋演讲稿汇总
2014/05/10 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
反四风问题学习心得体会
2016/01/22 职场文书
三年级作文之小小梦想
2019/12/06 职场文书
Nginx访问日志及错误日志参数说明
2021/03/31 Servers
分享几种python 变量合并方法
2022/03/20 Python