小程序实现左滑删除效果


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 相关文章推荐
浅谈JavaScript中面向对象技术的模拟
Sep 25 Javascript
form.submit()不能提交表单的错误原因及解决方法
Oct 13 Javascript
js获取时间并实现字符串和时间戳之间的转换
Jan 05 Javascript
教你如何使用firebug调试功能了解javascript闭包和this
Mar 04 Javascript
JavaScript数组随机排列实现随机洗牌功能
Mar 19 Javascript
jQuery手动点击实现图片轮播特效
Apr 20 Javascript
使用JS和canvas实现gif动图的停止和播放代码
Sep 01 Javascript
vue实现分页加载效果
Dec 24 Javascript
Vue实现星级评价效果实例详解
Dec 30 Javascript
Vue中fragment.js使用方法小结
Feb 17 Javascript
javascript中的with语句学习笔记及用法
Feb 17 Javascript
用js实现放大镜效果
Oct 28 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/10/09 PHP
一个php Mysql类 可以参考学习熟悉下
2009/06/21 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
2014/09/23 PHP
php导出CSV抽象类实例
2014/09/24 PHP
Laravel框架实现修改登录和注册接口数据返回格式的方法
2018/08/17 PHP
Javascript中Eval函数的使用说明
2008/10/11 Javascript
cnblogs中在闪存中屏蔽某人的实现代码
2010/11/14 Javascript
浅谈Javascript 执行顺序
2013/12/18 Javascript
自己封装的javascript事件队列函数版
2014/06/12 Javascript
IE浏览器IFrame对象内存不释放问题解决方法
2014/08/22 Javascript
DOM基础教程之使用DOM + Css
2015/01/20 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
2015/11/26 Javascript
JavaScript模拟push
2016/03/06 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
JS全角与半角转化实例(分享)
2017/07/04 Javascript
使用vue-cli创建项目的图文教程(新手入门篇)
2018/05/02 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
详解vue中axios的使用与封装
2019/03/20 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
2019/03/31 Javascript
jquery UI实现autocomplete在获取焦点时得到显示列表功能示例
2019/06/04 jQuery
js简单遍历获取对象中的属性值的方法示例
2019/06/19 Javascript
js对象简介与基本用法示例
2020/03/13 Javascript
vue+koa2搭建mock数据环境的详细教程
2020/05/18 Javascript
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
python使用post提交数据到远程url的方法
2015/04/29 Python
python中字符串前面加r的作用
2015/06/04 Python
Django 拆分model和view的实现方法
2019/08/16 Python
Python目录和文件处理总结详解
2019/09/02 Python
快速查找Python安装路径方法
2020/02/06 Python
幸福家庭事迹材料
2014/02/03 职场文书
2015入党自荐书范文
2015/03/05 职场文书
小学生家长意见
2015/06/03 职场文书
python实现大文本文件分割成多个小文件
2021/04/20 Python
react国际化react-intl的使用
2021/05/06 Javascript
新手入门Mysql--sql执行过程
2021/06/20 MySQL
Python可视化神器pyecharts绘制地理图表
2022/07/07 Python