微信小程序左滑删除实现代码实例


Posted in Javascript onSeptember 16, 2019

这篇文章主要介绍了微信小程序左滑删除实现代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

<view class="touch-item {{item.isTouchMove ? 'touch-move-active' : ''}}" data-index="{{index}}" wx:for="{{list}}" wx:key>
<view class="content">


<view style="{{item.txtStyle}}" class='item' data-index='{{index}}' bindtouchstart="touchstart" bindtouchmove="touchmove" bindtouchend="touchE">


<view class='title'>{{item.title}}</view>


<text>{{item.create_time}}</text>

</view>
</view>

<view class="del" data-id="{{item.id}}" catchtap="delBtn" data-index="{{index}}">删除</view>
</view>
.touch-item {
display: flex;

justify-content: space-between;

width: 100%;

overflow: hidden;

margin-bottom: 10rpx;

background: #f5f5f5;

height: 216rpx;
}

.content {

width: 100%;

margin-right: 0;

-webkit-transition: all 0.4s;

transition: all 0.4s;

-webkit-transform: translateX(90px);

transform: translateX(90px);

margin-left: -90px;
}

.del {

width: 90px;

display: flex;

flex-direction: column;

align-items: center;

justify-content: center;

color: #fff;

-webkit-transform: translateX(90px);

transform: translateX(90px);

-webkit-transition: all 0.4s;

transition: all 0.4s;

font-size: 35rpx;
}

.touch-move-active .content, .touch-move-active .del {

-webkit-transform: translateX(0);

transform: translateX(0);
}
// pages/touch/touch.js
Page({

  /**
* 页面的初始数据
*/
  data: {
    startX: 0,
    //开始坐标
    startY: 0,
    page: 1,
    list: [{
      id: 0,
      title: '标题1',
      create_time: '2019-09-06'
    },
    {
      id: 1,
      title: '标题2',
      create_time: '2019-09-06'
    },
    {
      id: 2,
      title: '标题3',
      create_time: '2019-09-06'
    },
    ]
  },
  touchE: function(e) {
    // console.log(e);
    var that = this
    if (e.changedTouches.length == 1) {
      //手指移动结束后触摸点位置的X坐标
      var endX = e.changedTouches[0].clientX;
      //触摸开始与结束,手指移动的距离
      var disX = that.data.startX - endX;
      var delBtnWidth = that.data.delBtnWidth;
      //如果距离小于删除按钮的1/2,不显示删除按钮
      var txtStyle = disX > delBtnWidth / 2 ? "left:-" + delBtnWidth + "rpx": "left:0rpx";

      //获取手指触摸的是哪一项
      var index = e.currentTarget.dataset.index;
      var list = that.data.list;
      list[index].txtStyle = txtStyle;
      //更新列表的状态
      that.setData({
        list: list
      });
    }
  },
  //手指触摸动作开始 记录起点X坐标
  touchstart: function(e) {
    //开始触摸时 重置所有删除
    this.data.list.forEach(function(v, i) {
      if (v.isTouchMove) //只操作为true的
      v.isTouchMove = false;
    }) this.setData({
      startX: e.changedTouches[0].clientX,
      startY: e.changedTouches[0].clientY,
      list: this.data.list
    })
  },
  //滑动事件处理
  touchmove: function(e) {
    var that = this,
    index = e.currentTarget.dataset.index,
    //当前索引
    startX = that.data.startX,
    //开始X坐标
    startY = that.data.startY,
    //开始Y坐标
    touchMoveX = e.changedTouches[0].clientX,
    //滑动变化坐标
    touchMoveY = e.changedTouches[0].clientY,
    //滑动变化坐标
    //获取滑动角度
    angle = that.angle({
      X: startX,
      Y: startY
    },
    {
      X: touchMoveX,
      Y: touchMoveY
    });
    that.data.list.forEach(function(v, i) {
      v.isTouchMove = false
      //滑动超过30度角 return
      if (Math.abs(angle) > 30) return;
      if (i == index) {
        if (touchMoveX > startX) //右滑
        v.isTouchMove = false
        else //左滑
        v.isTouchMove = true
      }
    })
    //更新数据
    that.setData({
      list: that.data.list
    })
  },
  /**
* 计算滑动角度
* @param {Object} start 起点坐标
* @param {Object} end 终点坐标
*/
  angle: function(start, end) {
    var _X = end.X - start.X,
    _Y = end.Y - start.Y
    //返回角度 /Math.atan()返回数字的反正切值
    return 360 * Math.atan(_Y / _X) / (2 * Math.PI);
  },
  /**
* 生命周期函数--监听页面加载
*/
  onLoad: function(options) {
},
  /**
* 生命周期函数--监听页面初次渲染完成
*/
  onReady: function() {
},
  /**
* 生命周期函数--监听页面显示
*/
  onShow: function() {
},
  /**
* 生命周期函数--监听页面隐藏
*/
  onHide: function() {
},
  /**
* 生命周期函数--监听页面卸载
*/
  onUnload: function() {
},
  /**
* 页面相关事件处理函数--监听用户下拉动作
*/
  onPullDownRefresh: function() {
},
  /**
* 页面上拉触底事件的处理函数
*/
  onReachBottom: function() {
},
  /**
* 用户点击右上角分享
*/
  onShareAppMessage: function() {
}
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
获取Javscript执行函数名称的方法
Dec 22 Javascript
JS 的应用开发初探(mootools)
Dec 19 Javascript
Javascript 命名空间模式
Nov 01 Javascript
js向上无缝滚动,网站公告效果 具体代码
Nov 18 Javascript
通过复制Table生成word和excel的javascript代码
Jan 20 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
Sep 05 Javascript
JS前向后瞻正则表达式定义与用法示例
Dec 27 Javascript
Vue中img的src属性绑定与static文件夹实例
May 18 Javascript
JavaScript中重名的函数与对象示例详析
Sep 28 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
Aug 08 Javascript
区别JavaScript函数声明与变量声明
Sep 12 Javascript
Vue CLI3基础学习之pages构建多页应用
Jun 02 Javascript
微信小程序左右滚动公告栏效果代码实例
Sep 16 #Javascript
layui 实现表单和文件上传一起传到后台的例子
Sep 16 #Javascript
Vue 自定义指令实现一键 Copy功能
Sep 16 #Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
Sep 16 #Javascript
layui使用templet格式化表格数据的方法
Sep 16 #Javascript
layui监听单元格编辑前后交互的例子
Sep 16 #Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
Sep 16 #Javascript
You might like
DC《小丑》11项提名领跑奥斯卡 Netflix成第92届奥斯卡提名最大赢家
2020/04/09 欧美动漫
PHP访问MYSQL数据库封装类(附函数说明)
2010/12/04 PHP
PHP中如何调用webservice的实例参考
2013/04/25 PHP
PHP中Http协议post请求参数
2015/11/02 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
基于jquery实现的表格分页实现代码
2011/06/21 Javascript
javascript实现禁止鼠标滚轮事件
2015/07/24 Javascript
JavaScript必知必会(三) String .的方法来自何方
2016/06/08 Javascript
Bootstrap实现水平排列的表单
2016/07/04 Javascript
jQuery基本选择器之标签名选择器
2016/09/03 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
JS正则匹配中文的方法示例
2017/01/06 Javascript
Javascript基础回顾之(三) js面向对象
2017/01/31 Javascript
基于VuePress 轻量级静态网站生成器的实现方法
2018/04/17 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
2018/09/16 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
2019/06/05 Javascript
python中定义结构体的方法
2013/03/04 Python
python爬虫的工作原理
2017/03/05 Python
Python namedtuple命名元组实现过程解析
2020/01/08 Python
python圣诞树编写实例详解
2020/02/13 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
美国领先的家庭健康检测试剂盒提供商:LetsGetChecked
2019/03/18 全球购物
广州迈达威.net面试题目
2012/03/10 面试题
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2014/01/19 面试题
优秀团员个人事迹材料
2014/01/29 职场文书
调研汇报材料范文
2014/08/17 职场文书
关于青春的演讲稿800字
2014/08/22 职场文书
和谐家庭事迹材料
2014/12/20 职场文书
公司人事任命通知
2015/04/20 职场文书
奠基仪式致辞
2015/07/30 职场文书
Python网络编程之ZeroMQ知识总结
2021/04/25 Python
Python爬取英雄联盟MSI直播间弹幕并生成词云图
2021/06/01 Python
Nginx进程调度问题详解
2021/09/25 Servers
JS前端监控采集用户行为的N种姿势
2022/07/23 Javascript