小程序实现左滑删除效果


Posted in Javascript onJuly 25, 2019

本文实例为大家分享了小程序实现左滑删除效果的具体代码,供大家参考,具体内容如下

小程序实现左滑删除效果

1、movable-area基本概念

实现思路:

大家仔细去看看官网的文档后再来看我写的这篇文章可能会更好理解。

(1)movable-area这个就是定义了一个移动的区域,跟普通的<view></view>的含义是一样的,不同在于,接着往下看;

注意:movable-area 必须设置width和height属性,不设置默认为10px

(2)movable-view这个就是一个可移动的视图容器,可以在页面中拖拽滑动。

movable-view 必须设置width和height属性,不设置默认为10px
movable-view 默认为绝对定位,top和left属性为0px
当movable-view小于movable-area时,movable-view的移动范围是在movable-area内;当movable-view大于movable-area时,movable-view的移动范围必须包含movable-area(x轴方向和y轴方向分开考虑)

但是要注意: movable-view必须在<movable-area/>组件中,并且必须是直接子节点,否则不能移动。
有这么一些属性看微信小程序api

OK,这就是关于movable-area组件的一些基本概念的介绍,接下来我们实践实践。

2、页面结构

(1)这是我们html基本页面结构,我主要来解释一下movable-view的属性起到了一些什么作用。

  • 首先我们定义了direction方向为horizontal(横向);
  • 然后x就是偏移方向,这里我们给个默认值为0;
  • out-of-bounds定义当超过可移动区域后,还可以移动;
  • damping为阻尼系数,设置为100就是让它移动快点;
  • 最后绑定了一个在拖动过程中触发的事件、触摸开始和结束事件。

<movable-view damping="100" out-of-bounds="true" direction="horizontal" x="{{x}}" animation="false" bindchange="handleMovableChange" capture-bind:touchstart="handleTouchestart" capture-bind:touchend="handleTouchend">

代码如下:

html

<view class="container">
 <view class="main">
 <view class="main_item">
  <movable-area>
  <movable-view damping="100" out-of-bounds="true" direction="horizontal" x="{{x}}" animation="false" bindchange="handleMovableChange" capture-bind:touchstart="handleTouchestart" capture-bind:touchend="handleTouchend">
   <view class="main_item_content ">
   左滑删除
   </view>
  </movable-view>
  </movable-area>
  <view class="delete_btn " data-productIndex="{{index}} " bindtap="handleDeleteProduct ">删除</view>
 </view>
 </view>
</view>

css:

.container {
 padding: 0;
}
 
page {
 padding: 0;
}
 
.main {
 display: flex;
 flex-direction: column;
 align-items: center;
}
 
.main_item {
 display: flex;
 flex-direction: row;
 background: #fff;
 overflow: hidden;
}
 
movable-area {
 width: 532rpx;
 height: 201rpx;
 background: #fff;
}
 
movable-view {
 width: 716rpx;
 height: 201rpx;
}
 
.main_item_content {
 box-sizing: border-box;
 height: 201rpx;
 border-radius: 10rpx;
 line-height: 201rpx;
 color: #8e8e8e;
 padding-left: 10px;
 background: #eee;
}
 
.delete_btn {
 width: 184rpx;
 height: 201rpx;
 background-color: #8FC31F;
 border-top-right-radius: 10px;
 border-bottom-right-radius: 10px;
 color: #fff;
 font-size: 28rpx;
 text-align: center;
 line-height: 201rpx;
}

js:

// pages/listDel/index.js
Page({
 
 /**
 * 页面的初始数据
 */
 data: {
 // x轴方向的偏移
 x: 0,
 // 当前x的值
 currentX: 0
 },
 
 handleMovableChange: function(e) {
 // this.data.currentX = e.detail.x;
 this.data.currentX = e.detail.x;
 },
 
 handleTouchend: function(e) {
 this.isMove = true;
 if (this.data.currentX < -46) {
  this.data.x = -92;
  this.setData({
  x: this.data.x
  });
 } else {
  this.data.x = 0;
  this.setData({
  x: this.data.x
  });
 }
 },
 handleTouchestart: function(e) {},
 /**
 * 生命周期函数--监听页面加载
 */
 onLoad: function(options) {
 // let _this = this;
 // wx.createSelectorQuery().selectAll('.delBtn ').boundingClientRect(function(rect) {
 // _this.data.delWidth = rect[0].width;
 // }).exec();
 },
 
 /**
 * 生命周期函数--监听页面初次渲染完成
 */
 onReady: function() {
 
 },
 
 /**
 * 生命周期函数--监听页面显示
 */
 onShow: function() {
 
 },
 
 /**
 * 生命周期函数--监听页面隐藏
 */
 onHide: function() {
 
 },
 
 /**
 * 生命周期函数--监听页面卸载
 */
 onUnload: function() {
 
 },
 
 /**
 * 页面相关事件处理函数--监听用户下拉动作
 */
 onPullDownRefresh: function() {
 
 },
 
 /**
 * 页面上拉触底事件的处理函数
 */
 onReachBottom: function() {
 
 },
 
 /**
 * 用户点击右上角分享
 */
 onShareAppMessage: function() {
 
 }
})

2:touchstart、touchmove 如果大家想了解的更清楚可以查看帮助文档的哦

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

Javascript 相关文章推荐
JavaScript 基础篇之对象、数组使用介绍(三)
Apr 07 Javascript
iframe调用父页面函数示例详解
Jul 17 Javascript
jQuery Mobile弹出窗、弹出层知识汇总
Jan 05 Javascript
js实现图片无缝滚动特效
Mar 19 Javascript
深入php面向对象、模式与实践
Feb 16 Javascript
全面解析Bootstrap中tooltip、popover的使用方法
Jun 13 Javascript
js实现可旋转的立方体模型
Oct 16 Javascript
JavaScript基础之AJAX简单的小demo
Jan 29 Javascript
vue打包后显示空白正确处理方法
Nov 01 Javascript
深入理解requireJS-实现一个简单的模块加载器
Jan 15 Javascript
JavaScript Reflect Metadata实现详解
Dec 12 Javascript
基于vue-draggable 实现三级拖动排序效果
Jan 10 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
Jul 25 #Javascript
详解Vue.js和layui日期控件冲突问题解决办法
Jul 25 #Javascript
turn.js异步加载实现翻书效果
Jul 25 #Javascript
js 实现ajax发送步骤过程详解
Jul 25 #Javascript
MockJs结合json-server模拟后台数据
Aug 26 #Javascript
微信小程序 调用微信授权窗口相关问题解决
Jul 25 #Javascript
mock.js模拟前后台交互
Jul 25 #Javascript
You might like
CI框架装载器Loader.php源码分析
2014/11/04 PHP
php中ob函数缓冲机制深入理解
2015/08/03 PHP
对laravel的session获取与存取方法详解
2019/10/08 PHP
tp5框架基于Ajax实现列表无刷新排序功能示例
2020/02/10 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
JS 文件本身编码转换 图文教程
2009/10/12 Javascript
jquery验证手机号码、邮箱格式是否正确示例代码
2013/07/28 Javascript
Javascript实现页面跳转的几种方式分享
2013/10/26 Javascript
js使下拉列表框可编辑不止是选择
2013/12/12 Javascript
js动态移动滚动条至底部示例代码
2014/04/24 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
2015/01/13 Javascript
JQuery中DOM事件合成用法实例分析
2015/06/13 Javascript
jQuery抛物线运动实现方法(附完整demo源码下载)
2016/01/08 Javascript
jQuery过滤选择器经典应用
2016/08/18 Javascript
深入学习Bootstrap表单
2016/12/13 Javascript
Nodejs中使用captchapng模块生成图片验证码
2017/05/18 NodeJs
浅谈redux以及react-redux简单实现
2018/08/28 Javascript
解决微信小程序中转换时间格式IOS不兼容的问题
2019/02/15 Javascript
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
2020/07/20 Javascript
Vue获取微博授权URL代码实例
2020/11/04 Javascript
Python中的面向对象编程详解(上)
2015/04/13 Python
python3实现钉钉消息推送的方法示例
2019/03/14 Python
对Python 简单串口收发GUI界面的实例详解
2019/06/12 Python
python写入数据到csv或xlsx文件的3种方法
2019/08/23 Python
Python2和Python3中@abstractmethod使用方法
2020/02/04 Python
Python 实现黑客帝国中的字符雨的示例代码
2020/02/20 Python
Python HTMLTestRunner可视化报告实现过程解析
2020/04/10 Python
Django之腾讯云短信的实现
2020/06/12 Python
电大毕业生自我鉴定
2013/11/10 职场文书
出国留学经济担保书
2014/04/01 职场文书
2014年廉洁自律承诺书
2014/05/26 职场文书
供电工程专业求职信
2014/08/09 职场文书
海洋科学专业求职信
2014/08/10 职场文书
董事长助理工作总结2015
2015/07/23 职场文书
Ajax是什么?Ajax高级用法之Axios技术
2021/04/21 Javascript
Python 全局空间和局部空间
2022/04/06 Python