微信小程序列表中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实现Sleep函数的代码
Mar 04 Javascript
使用ExtJS技术实现的拖动树结点
Aug 05 Javascript
12行javascript代码绘制一个八卦图
Apr 02 Javascript
javascript性能优化之DOM交互操作实例分析
Dec 12 Javascript
AngularJS 中的Promise --- $q服务详解
Sep 14 Javascript
前端js弹出框组件使用方法
Aug 24 Javascript
微信小程序开发中的疑问解答汇总
Jul 03 Javascript
Axios学习笔记之使用方法教程
Jul 21 Javascript
js处理包含中文的字符串实例
Oct 11 Javascript
vue+iview写个弹框的示例代码
Dec 05 Javascript
Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
May 17 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
Jul 29 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生成随机密码自定义函数代码(简单快速)
2014/05/10 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
2014/06/19 PHP
php抓取网站图片并保存的实现方法
2015/10/29 PHP
php简单统计在线人数的方法
2016/05/10 PHP
PHP基于socket实现客户端和服务端通讯功能
2017/07/13 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
用php定义一个数组最简单的方法
2019/10/04 PHP
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
2012/04/14 Javascript
js split 的用法和定义 js split分割字符串成数组的实例代码
2012/05/13 Javascript
JQuery为页面Dom元素绑定事件及解除绑定方法
2014/04/23 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
2016/07/01 Javascript
jQuery ajax请求struts action实现异步刷新
2017/04/19 jQuery
Angular 表单控件示例代码
2017/06/26 Javascript
vue全局组件与局部组件使用方法详解
2018/03/29 Javascript
Vue.js进阶知识点总结
2018/04/01 Javascript
JS中双击和单击事件冲突的解决方法
2018/04/09 Javascript
Vue2.0 实现歌手列表滚动及右侧快速入口功能
2018/08/08 Javascript
解决vue attr取不到属性值的问题
2018/09/18 Javascript
element-ui 的el-button组件中添加自定义颜色和图标的实现方法
2018/10/26 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
2019/05/10 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
2020/09/04 Javascript
独特的python循环语句
2016/11/20 Python
python中实现延时回调普通函数示例代码
2017/09/08 Python
python类中super() 的使用解析
2019/12/19 Python
Python批量将图片灰度化的实现代码
2020/04/11 Python
基于python实现操作redis及消息队列
2020/08/27 Python
人力资源专员自我评价怎么写
2013/09/19 职场文书
经济学博士求职自荐信范文
2013/11/23 职场文书
领导的自我鉴定
2013/12/28 职场文书
优秀的个人求职信范文
2014/05/09 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
先进基层党组织主要事迹材料
2015/11/03 职场文书
创业计划书之淘宝网店
2019/10/08 职场文书
python turtle绘图
2022/05/04 Python