小程序实现左滑删除效果


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 使用手册(七)
Sep 23 Javascript
js中call与apply的用法小结
Dec 28 Javascript
JQuery遍历json数组的3种方法
Nov 08 Javascript
第二次聊一聊JS require.js模块化工具的基础知识
Apr 17 Javascript
JS实现滑动门效果的方法详解
Dec 19 Javascript
jquery基于layui实现二级联动下拉选择(省份城市选择)
Jun 20 jQuery
如何安装控制器JavaScript生成插件详解
Oct 21 Javascript
详解vue中axios的使用与封装
Mar 20 Javascript
jQuery中实现text()的方法
Apr 04 jQuery
Bootstrap 时间日历插件bootstrap-datetimepicker配置与应用小结
May 28 Javascript
Vue项目前后端联调(使用proxyTable实现跨域方式)
Jul 18 Javascript
JQuery通过键盘控制键盘按下与松开触发事件
Aug 07 jQuery
微信公众号获取用户地理位置并列出附近的门店的示例代码
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的String类代码
2010/04/20 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
2016/05/13 PHP
浅谈Laravel中的一个后期静态绑定
2017/08/11 PHP
document对象execCommand的command参数介绍
2006/08/01 Javascript
js 跨域和ajax 跨域问题小结
2009/07/01 Javascript
Jquery作者John Resig自己封装的javascript 常用函数
2009/11/09 Javascript
JS动态增加删除UL节点LI及相关内容示例
2014/05/21 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
js获取当前时间显示在页面上并每秒刷新
2014/12/24 Javascript
JavaScript 动态加载脚本和样式的方法
2015/04/13 Javascript
第六章之辅组类与响应式工具
2016/04/25 Javascript
浅谈JS继承_借用构造函数 &amp; 组合式继承
2016/08/16 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
2016/09/17 Javascript
Jquery实现上下移动和排序代码
2016/10/17 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
2017/04/24 Javascript
学习使用Bootstrap输入框、导航、分页等常用组件
2017/05/11 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
代码整洁之道(重构)
2018/10/25 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
JavaScript实现留言板案例
2020/03/17 Javascript
python字符串中的单双引
2017/02/16 Python
python+opencv轮廓检测代码解析
2018/01/05 Python
浅谈pandas用groupby后对层级索引levels的处理方法
2018/11/06 Python
python3的print()函数的用法图文讲解
2019/07/16 Python
python3 下载网络图片代码实例
2019/08/27 Python
pytorch中的transforms模块实例详解
2019/12/31 Python
Pytorch根据layers的name冻结训练方式
2020/01/06 Python
Python如何操作office实现自动化及win32com.client的运用
2020/04/01 Python
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
研究生求职推荐信范文
2013/11/30 职场文书
工地安全质量标语
2014/06/07 职场文书
保管员岗位职责
2015/02/14 职场文书
公司员工培训管理制度
2015/08/04 职场文书