小程序实现左滑删除效果


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 相关文章推荐
jQuery筛选器children()案例详解(图文)
Feb 17 Javascript
js clearInterval()方法的定义和用法
Nov 11 Javascript
js命名空间写法示例
Dec 18 Javascript
JS实现控制文本框的内容
Jul 10 Javascript
JS自定义函数对web前端上传的文件进行类型大小判断
Oct 19 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
Jan 06 Javascript
浅谈javascript的闭包
Jan 23 Javascript
浅谈Node.js 中间件模式
Jun 12 Javascript
微信小程序带动画弹窗组件使用方法详解
Nov 27 Javascript
JavaScript中的回调函数实例讲解
Jan 27 Javascript
Vue项目中ESlint规范示例代码
Jul 04 Javascript
微信小程序实现简单的select下拉框
Nov 23 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 数据结构 算法描述 冒泡排序 bubble sort
2011/07/10 PHP
深入解析yii权限分级式访问控制的实现(非RBAC法)
2013/06/13 PHP
php实现图片文件与下载文件防盗链的方法
2014/11/03 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
2017/10/13 PHP
PHP命名空间用法实例分析
2019/09/04 PHP
分享27款非常棒的jQuery 表单插件
2011/03/28 Javascript
jquery选择器的选择使用及性能介绍
2013/01/16 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
JavaScript生成带有缩进的表格代码
2016/06/15 Javascript
基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果
2018/01/09 Javascript
jQuery+CSS实现的标签页效果示例【测试可用】
2018/08/14 jQuery
jquery使用echarts实现有向图可视化功能示例
2019/11/25 jQuery
如何用JS模拟实现数组的map方法
2020/07/30 Javascript
JavaScript实现网页跨年倒计时
2020/12/02 Javascript
python共享引用(多个变量引用)示例代码
2013/12/04 Python
python写日志封装类实例
2015/06/28 Python
python kmeans聚类简单介绍和实现代码
2018/02/23 Python
Python socket实现的简单通信功能示例
2018/08/21 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
Python定时任务APScheduler的实例实例详解
2019/07/22 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
2019/08/08 Python
Python Web框架之Django框架cookie和session用法分析
2019/08/16 Python
Pytorch 实现数据集自定义读取
2020/01/18 Python
python构造函数init实例方法解析
2020/01/19 Python
详解Python Celery和RabbitMQ实战教程
2021/01/20 Python
使用Python下载抖音各大V视频的思路详解
2021/02/06 Python
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
数百万免费的图形资源:Freepik
2020/09/21 全球购物
广告学专业推荐信范文
2013/11/23 职场文书
自主实习接收函
2014/01/13 职场文书
主题婚礼策划方案
2014/02/10 职场文书
中学生民族团结演讲稿
2014/08/27 职场文书
地理信息科学专业推荐信
2014/09/08 职场文书
2015年财务经理工作总结
2015/05/13 职场文书