小程序实现左滑删除效果


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切换功能的简单方法
Nov 23 Javascript
javascript中[]和{}对象使用介绍
Mar 20 Javascript
javascript中的startWith和endWith的几种实现方法
May 07 Javascript
jquery限定文本框只能输入数字即整数和小数
Nov 29 Javascript
实现非常简单的js双向数据绑定
Nov 06 Javascript
谈一谈javascript闭包
Jan 28 Javascript
javascript添加前置0(补零)的几种方法
Jan 05 Javascript
基于javascript实现最简单选项卡切换
Feb 01 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
Mar 07 Javascript
Vue动态面包屑功能的实现方法
Jul 01 Javascript
layui 实现加载动画以及非真实加载进度的方法
Sep 23 Javascript
微信小程序实现点击导航条切换页面
Nov 19 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面向对象编程快速入门
2006/12/14 PHP
微信封装的调用微信签名包的类库
2017/06/08 PHP
获取dom元素那些讨厌的位置封装代码
2010/06/23 Javascript
你的 mixin 真的兼容 ECMAScript 5 吗?
2013/04/11 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
2013/11/21 Javascript
jqplot通过ajax动态画折线图的方法及思路
2013/12/08 Javascript
js判断浏览器类型为ie6时不执行
2014/06/15 Javascript
JavaScript匿名函数与委托使用示例
2014/07/22 Javascript
JS小游戏之象棋暗棋源码详解
2014/09/25 Javascript
js实现精美的银灰色竖排折叠菜单
2015/05/16 Javascript
Javascript 创建类并动态添加属性及方法的简单实现
2016/10/20 Javascript
BootStrap Datetimepicker 汉化的实现代码
2017/02/10 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
2017/03/08 Javascript
jQuery实现div跟随鼠标移动
2020/08/20 jQuery
详解如何使用webpack打包Vue工程
2017/05/27 Javascript
通过vue提供的keep-alive减少对服务器的请求次数
2018/04/01 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
2018/04/22 Javascript
Angular8 简单表单验证的实现示例
2020/06/03 Javascript
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
[01:04:22]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 IG vs EG
2018/04/01 DOTA
Python  连接字符串(join %)
2008/09/06 Python
Python实现把回车符\r\n转换成\n
2015/04/23 Python
python使用PyGame播放Midi和Mp3文件的方法
2015/04/24 Python
在Python中使用mechanize模块模拟浏览器功能
2015/05/05 Python
python学习之编写查询ip程序
2016/02/27 Python
Python操作Redis之设置key的过期时间实例代码
2018/01/25 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
2019/01/08 Python
PyQt5显示GIF图片的方法
2019/06/17 Python
python多进程下实现日志记录按时间分割
2019/07/22 Python
Django ORM 查询表中某列字段值的方法
2020/04/30 Python
Python基于pyjnius库实现访问java类
2020/07/31 Python
2019年分享net面试的经历和题目
2016/08/07 面试题
创联软件面试题笔试题
2012/10/07 面试题
历史专业学生的自我评价
2014/02/28 职场文书
观后感格式
2015/06/19 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书