小程序实现左滑删除效果


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控制input框只读实现示例
Jan 20 Javascript
jQuery实现图片上传和裁剪插件Croppie
Nov 29 Javascript
详解JavaScript基于面向对象之创建对象(2)
Dec 10 Javascript
基于javascript实现全屏漂浮广告
Mar 31 Javascript
分享javascript实现的冒泡排序代码并优化
Jun 05 Javascript
微信小程序slider组件使用详解
Jan 31 Javascript
小程序视频列表中视频的播放与停止的示例代码
Jul 20 Javascript
Vue自定义属性实例分析
Feb 23 Javascript
微信小程序 setData 对 data数据影响问题
Apr 18 Javascript
JS箭头函数和常规函数之间的区别实例分析【 5 个区别】
May 27 Javascript
vue 调用 RESTful风格接口操作
Aug 11 Javascript
浅析JavaScript预编译和暗示全局变量
Sep 03 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使用SOAP扩展实现WebService的方法
2016/04/01 PHP
PHP数据库处理封装类实例
2016/12/24 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
用正则获取指定路径文件的名称
2007/02/27 Javascript
javascript GUID生成器实现代码
2009/10/31 Javascript
Js四则运算函数代码
2012/07/21 Javascript
JavaScript基础知识之数据类型
2012/08/06 Javascript
JQuery中节点遍历方法实例
2015/05/18 Javascript
js实现的下拉框二级联动效果
2016/04/30 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
2020/04/16 Javascript
JavaScript中的Reflect对象详解(ES6新特性)
2016/07/22 Javascript
bootstrap输入框组件使用方法详解
2017/01/19 Javascript
使用Javascript简单计算器
2018/11/17 Javascript
详解react阻止无效重渲染的多种方式
2018/12/11 Javascript
Fundebug支持监控微信小程序HTTP请求错误的方法
2019/02/21 Javascript
Javascript中的奇葩知识,你知道吗?
2021/01/25 Javascript
python 域名分析工具实现代码
2009/07/15 Python
Python高级应用实例对比:高效计算大文件中的最长行的长度
2014/06/08 Python
Python实现远程调用MetaSploit的方法
2014/08/22 Python
python的Template使用指南
2014/09/11 Python
使用Python求解最大公约数的实现方法
2015/08/20 Python
Python random模块用法解析及简单示例
2017/12/18 Python
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
Python爬虫包BeautifulSoup异常处理(二)
2018/06/17 Python
解决PyCharm同目录下导入模块会报错的问题
2018/10/13 Python
使用Keras构造简单的CNN网络实例
2020/06/29 Python
百联网上商城:i百联
2017/01/28 全球购物
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
改变生活的男士内衣:SAXX Underwear
2019/08/28 全球购物
yy婚礼主持词
2014/03/14 职场文书
学生党员批评与自我批评
2014/10/15 职场文书
2014年银行员工工作总结
2014/11/12 职场文书
二审答辩状范文
2015/05/22 职场文书
萤火虫之墓观后感
2015/06/05 职场文书
SQL实现LeetCode(177.第N高薪水)
2021/08/04 MySQL
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers