小程序实现左滑删除效果


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 相关文章推荐
js中switch case循环实例代码
Dec 30 Javascript
select多选 multiple的使用示例
Jun 16 Javascript
原生js实现移动开发轮播图、相册滑动特效
Apr 17 Javascript
javascript实现手机震动API代码
Aug 05 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
Aug 08 Javascript
JavaScript编码风格指南(中文版)
Aug 26 Javascript
Bootstrap modal使用及点击外部不消失的解决方法
Dec 13 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
Mar 17 Javascript
easyui combogrid实现本地模糊搜索过滤多列
May 13 Javascript
vue-router 实现导航守卫(路由卫士)的实例代码
Sep 02 Javascript
Vue项目移动端滚动穿透问题的实现
May 19 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
Jan 28 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
修改了一个很不错的php验证码(支持中文)
2007/02/14 PHP
PHP clearstatcache()函数详解
2010/03/02 PHP
php实现12306余票查询、价格查询示例
2014/04/17 PHP
php+memcache实现的网站在线人数统计代码
2014/07/04 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
laravel 解决后端无法获取到前端Post过来的值问题
2019/10/22 PHP
laravel通用化的CURD的实现
2019/12/13 PHP
24款热门实用的jQuery插件推荐
2014/12/24 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
解决WordPress使用CDN后博文无法评论的错误
2015/12/15 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
2016/05/31 Javascript
Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法
2016/10/13 Javascript
javascript完美实现给定日期返回上月日期的方法
2017/06/15 Javascript
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
webpack打包react项目的实现方法
2018/06/21 Javascript
jQuery实现的导航条点击后高亮显示功能示例
2019/03/04 jQuery
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
Python构造函数及解构函数介绍
2015/02/26 Python
Python对列表去重的多种方法(四种方法)
2017/12/05 Python
Python使用base64模块进行二进制数据编码详解
2018/01/11 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
python tools实现视频的每一帧提取并保存
2020/03/20 Python
Python3简单实现串口通信的方法
2019/06/12 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
python实现文件分片上传的接口自动化
2020/11/19 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
大学生毕业自我鉴定
2013/11/06 职场文书
丧事主持词大全
2014/04/02 职场文书
医学专业自荐信
2014/06/14 职场文书
物流专业求职信
2014/06/30 职场文书
学校安全管理责任书
2014/07/23 职场文书
重点工程汇报材料
2014/08/27 职场文书
2014年银行柜员工作总结
2014/11/12 职场文书
2014年环卫工作总结
2014/11/22 职场文书
教你怎么用python实现字符串转日期
2021/05/24 Python
PostgreSQL聚合函数介绍以及分组和排序
2022/04/12 PostgreSQL