小程序实现左滑删除效果


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 相关文章推荐
Code: write(s,d) 输出连续字符串
Aug 19 Javascript
js动态改变select选择变更option的index值示例
Jul 10 Javascript
WEB前端设计师常用工具集锦
Dec 09 Javascript
js闭包用法实例详解
Dec 13 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
Feb 21 Javascript
基于Vue过渡状态实例讲解
Sep 14 Javascript
vue打包后显示空白正确处理方法
Nov 01 Javascript
vue 组件的封装之基于axios的ajax请求方法
Aug 11 Javascript
Element实现表格分页数据选择+全选所有完善批量操作
Jun 07 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
Sep 23 Javascript
js实现图片上传即时显示效果
Sep 30 Javascript
vue element 关闭当前tab 跳转到上一路由操作
Jul 22 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面向对象全攻略 (九)访问类型
2009/09/30 PHP
小文件php+SQLite存储方案
2010/09/04 PHP
跟我学Laravel之请求(Request)的生命周期
2014/10/15 PHP
php验证邮箱和ip地址最简单方法汇总
2015/10/30 PHP
Laravel学习笔记之Artisan命令生成自定义模板的方法
2018/11/22 PHP
PHP 扩展Memcached命令用法实例总结
2020/06/04 PHP
服务器安全设置的几个注册表设置
2007/07/28 Javascript
理解Javascript_13_执行模型详解
2010/10/20 Javascript
JS获得URL超链接的参数值实例代码
2013/06/21 Javascript
jquery实现点击消失的代码
2014/03/03 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
2015/12/26 Javascript
简单理解js的prototype属性及使用
2016/12/07 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
js弹性势能动画之抛物线运动实例详解
2017/07/27 Javascript
JavaScript门道之标准库
2018/05/26 Javascript
vue项目引入Iconfont图标库的教程图解
2018/10/24 Javascript
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
在Vue项目中使用snapshot测试的具体使用
2019/04/16 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
Python中获取网页状态码的两个方法
2014/11/03 Python
利用Python开发实现简单的记事本
2016/11/15 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
对python中dict和json的区别详解
2018/12/18 Python
python实现的读取网页并分词功能示例
2019/10/29 Python
Pytorch基本变量类型FloatTensor与Variable用法
2020/01/08 Python
python 读取二进制 显示图片案例
2020/04/24 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
CSS3中的Transition过度与Animation动画属性使用要点
2016/05/20 HTML / CSS
Ever New美国:澳大利亚领先的女装时尚品牌
2019/11/28 全球购物
综合办公室个人的自我评价
2013/12/22 职场文书
成功的酒店创业计划书
2013/12/27 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
python中Matplotlib绘制直线的实例代码
2021/07/04 Python