微信小程序列表中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基于cookie实现来宾统计记录访客信息的方法
Aug 04 Javascript
JS实现3D图片旋转展示效果代码
Sep 22 Javascript
Angularjs实现多个页面共享数据的方式
Mar 29 Javascript
vue中实现滚动加载更多的示例
Nov 08 Javascript
使用vue-cli(vue脚手架)快速搭建项目的方法
May 21 Javascript
详解AngularJS 过滤器的使用
Jun 02 Javascript
vue form check 表单验证的实现代码
Dec 09 Javascript
通过说明与示例了解js五种设计模式
Jun 17 Javascript
jquery图片预览插件实现方法详解
Jul 18 jQuery
浅析Vue下的components模板使用及应用
Nov 27 Javascript
js面向对象之实现淘宝放大镜
Jan 15 Javascript
解决vue项目中遇到 Cannot find module ‘chalk‘ 报错的问题
Nov 05 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实现股票趋势图和柱形图
2015/02/07 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
php7 参数、整形及字符串处理机制修改实例分析
2020/05/25 PHP
Javascript 获取字符串字节数的多种方法
2009/06/02 Javascript
类似GMAIL的Ajax信息反馈显示
2010/02/16 Javascript
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
2013/01/21 Javascript
js读取json的两种常用方法示例介绍
2014/10/19 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
jQuery的Scrollify插件实现滑动到页面下一节点
2015/07/05 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
Bootstrap实现弹性搜索框
2016/07/11 Javascript
javascript宿主对象之window.navigator详解
2016/09/07 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
2016/10/25 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
2016/11/07 Javascript
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
ng-events类似ionic中Events的angular全局事件
2018/09/05 Javascript
VueJS 取得 URL 参数值的方法
2019/07/19 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
2019/08/12 Javascript
Vue 实现显示/隐藏层的思路(加全局点击事件)
2019/12/31 Javascript
Angular处理未可知异常错误的方法详解
2021/01/17 Javascript
python sys模块sys.path使用方法示例
2013/12/04 Python
python爬取m3u8连接的视频
2018/02/28 Python
python 高效去重复 支持GB级别大文件的示例代码
2018/11/08 Python
Flask框架踩坑之ajax跨域请求实现
2019/02/22 Python
python 提取文件指定列的方法示例
2019/08/07 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
2020/03/28 Python
Sephora丝芙兰泰国官方网站:国际知名化妆品购物
2017/11/15 全球购物
JSF如何进行表格处理及取值
2012/08/06 面试题
2014年企业工会工作总结
2014/11/12 职场文书
大学生就业推荐表自我评价
2015/03/02 职场文书
物资采购管理制度
2015/08/06 职场文书
南阳市白酒市场的调查报告
2019/11/08 职场文书
pytorch Dropout过拟合的操作
2021/05/27 Python
SONY AN-LP1 短波有源天线放大器图
2022/04/05 无线电
pycharm无法安装cv2模块问题
2022/05/20 Python