微信小程序列表中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 相关文章推荐
JS中的public和private对象,即static修饰符
Jan 18 Javascript
Javascript对象属性方法汇总
Nov 21 Javascript
jQuery判断复选框是否勾选的原理及示例
May 21 Javascript
一个JavaScript函数把URL参数解析成Json对象
Sep 24 Javascript
JavaScript获取网页表单action属性的方法
Apr 02 Javascript
Angular 根据 service 的状态更新 directive
Apr 03 Javascript
深入理解javascript中的 “this”
Jan 17 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
Aug 08 Javascript
jQuery实现基本淡入淡出效果的方法详解
Sep 05 jQuery
javascript实现简易数码时钟
Mar 30 Javascript
JS如何在不同平台实现多语言方式
Jul 16 Javascript
ESLint 是如何检查 .vue 文件的
Nov 30 Vue.js
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
用 PHP5 轻松解析 XML
2006/12/04 PHP
解析phpstorm + xdebug 远程断点调试
2013/06/20 PHP
从PHP的源码中深入了解stdClass类
2014/04/18 PHP
php中数字0和空值的区别分析
2014/06/05 PHP
Fedora下安装php Redis扩展笔记
2014/09/03 PHP
php简单smarty入门程序实例
2015/06/11 PHP
利用PHP实现一个简单的用户登记表示例
2017/04/25 PHP
php实现微信支付之企业付款
2018/05/30 PHP
关于图片按比例自适应缩放的js代码
2011/10/30 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
2013/07/10 Javascript
jQuery zTree加载树形菜单功能
2016/02/25 Javascript
原生js实现焦点轮播图效果
2017/01/12 Javascript
jQuery插件HighCharts绘制2D半圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
详解ES6语法之可迭代协议和迭代器协议
2018/01/13 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
2019/06/10 Javascript
JavaScript Event Loop相关原理解析
2020/06/10 Javascript
在Python上基于Markov链生成伪随机文本的教程
2015/04/17 Python
利用信号如何监控Django模型对象字段值的变化详解
2017/11/27 Python
Pandas DataFrame 取一行数据会得到Series的方法
2018/11/10 Python
python实现本地批量ping多个IP的方法示例
2019/08/07 Python
解决Django连接db遇到的问题
2019/08/29 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
使用Fabric自动化部署Django项目的实现
2019/09/27 Python
Python操作多维数组输出和矩阵运算示例
2019/11/28 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
2020/03/09 Python
利用CSS3实现炫酷的飞机起飞动画
2016/09/17 HTML / CSS
HTML5实现多张图片上传功能
2016/03/11 HTML / CSS
欧舒丹美国官网:L’Occitane美国
2018/02/23 全球购物
法律进机关实施方案
2014/03/12 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
2014财务人员自我评价范文
2014/09/21 职场文书
教师拔河比赛广播稿
2014/10/14 职场文书
2014三年级班主任工作总结
2014/12/05 职场文书
2015年教师党员公开承诺书
2015/01/22 职场文书
导游词之日本富士山
2020/01/06 职场文书
Python实现Excel文件的合并(以新冠疫情数据为例)
2022/03/20 Python