微信小程序列表中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 相关文章推荐
延时重复执行函数 lLoopRun.js
May 08 Javascript
Ext.MessageBox工具类简介
Dec 10 Javascript
初试jQuery EasyUI 使用介绍
Apr 01 Javascript
基于jquery的滑动样例代码
Nov 20 Javascript
jQuery AjaxQueue改进步骤
Oct 06 Javascript
js实现两点之间画线的方法
May 12 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
Jan 29 Javascript
JavaScript操作 url 中 search 部分方法函数
Jun 15 Javascript
Angular.js前台传list数组由后台spring MVC接收数组示例代码
Jul 31 Javascript
js实现二级菜单点击显示当前内容效果
Apr 28 Javascript
vue-cli随机生成port源码的方法
Sep 02 Javascript
微信小程序学习总结(一)项目创建与目录结构分析
Jun 04 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
国内咖啡文化
2021/03/03 咖啡文化
PHP模板引擎Smarty的缓存使用总结
2014/04/24 PHP
javascript innerHTML使用分析
2010/12/03 Javascript
IE6 fixed的完美解决方案
2011/03/31 Javascript
jquery利用event.which方法获取键盘输入值的代码
2011/10/09 Javascript
js性能优化 如何更快速加载你的JavaScript页面
2012/03/17 Javascript
caller和callee的区别介绍及演示结果
2013/03/10 Javascript
浅析node连接数据库(express+mysql)
2015/11/30 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形网络(1)
2015/11/30 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
2016/07/08 Javascript
微信小程序 wx:key详细介绍
2016/10/28 Javascript
ionic2自定义cordova插件开发以及使用(Android)
2017/06/19 Javascript
angularjs下拉框空白的解决办法
2017/06/20 Javascript
原生js实现简单的模态框示例
2017/09/08 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
2018/03/21 Javascript
深入理解Vue Computed计算属性原理
2018/05/29 Javascript
JavaScript强制类型转换和隐式类型转换操作示例
2019/05/01 Javascript
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
[01:19:46]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
python代码制作configure文件示例
2014/07/28 Python
python实现二维插值的三维显示
2018/12/17 Python
python xpath获取页面注释的方法
2019/01/14 Python
关于tf.reverse_sequence()简述
2020/01/20 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
2020/06/22 Python
Django windows使用Apache实现部署流程解析
2020/10/12 Python
python math模块的基本使用教程
2021/01/16 Python
HTML5 CSS3实现一个精美VCD包装盒个性幻灯片案例
2014/06/16 HTML / CSS
宝拉珍选美国官网:Paula’s Choice美国
2018/01/07 全球购物
what is the difference between ext2 and ext3
2013/11/03 面试题
举例说明类变量和实例变量的区别
2016/06/30 面试题
办公室主任职责范文
2013/11/08 职场文书
感恩老师的演讲稿
2014/05/06 职场文书
班级口号大全
2014/06/09 职场文书
幼儿园安全责任书范本
2014/07/24 职场文书
工人先进事迹材料
2014/12/26 职场文书
PYTHON使用Matplotlib去实现各种条形图的绘制
2022/03/22 Python