微信小程序实现滑动删除效果

最初打算使用scroll-view实现,效果好、流畅、有惯性滑动,但由于滚动条没法去掉、无法实现上下层的帧布局,最终放弃了。

还是自己写个吧,利用手势事件。遗憾的是小程序中目前没有像Android中快速滑动事件,所以,要实现惯性滑动是不可能了。

item的布局:

推荐小程序优先使用flex布局,完全够用。这也是微信推荐的。

<view wx:for="{{cardTeams}}" wx:for-item="cardTeam" id="{{cardTeam.id}}" class="item" bindtouchstart="drawStart" bindtouchmove="drawMove" bindtouchend="drawEnd" style="right:{{cardTeam.right}}px">
    <image class="img" src="http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg" mode="scaleToFill"></image>
    <view class="number-wrapper">
     <text class="name">{{cardTeam.name}}</text>
     <view class="count-wrapper">
      <view class="decrease-btn">-</view>
      <text class="count">1</text>
      <view class="increase-btn">+</view>
     </view>
     <view class="price-wrapper">
      <text class="unit">¥</text>
      <text class="price">99.80</text>
     </view>
    </view>
    <view class="ok"><view class="inner-ok">确定</view></view>
    <view class="remove" data-id="{{cardTeam.id}}" bindtap="delItem"><view>删除</view></view>
   </view>

主要是将删除按钮的设为绝对定位(position: absolute):

.item .remove{
  width: 60px;
  height: 100%;
  background-color: red;
  position: absolute;
  top: 0;
  right: -60px;
  display: flex;
  justify-content: center;
  align-items: center;
}
Page({
 data: {
  cardTeams:[{"id":"aaaaa", "name":"android教程", "url":"http://www.see-source.com", "right":0, "startRight":0},{"id":"bbbb", "name":"小程序教程", "url":"http://www.see-source.com", "right":0, "startRight":0}]
 },
 drawStart : function(e){
   // console.log("drawStart");
  var touch = e.touches[0];
  startX = touch.clientX;
  startY = touch.clientY;
  var cardTeams = this.data.cardTeams;
  for(var i in cardTeams){
    var data = cardTeams[i];
    data.startRight = data.right;
  }
  key = true;
 },
 drawEnd : function(e){
  console.log("drawEnd");
  var cardTeams = this.data.cardTeams;
  for(var i in cardTeams){
    var data = cardTeams[i];
    if(data.right <= 100/2){
      data.right = 0;
    }else{
      data.right = maxRight;
    }
  }
  this.setData({
    cardTeams:cardTeams
  });
 },
 drawMove : function(e){
   //console.log("drawMove");
  var self = this;
  var dataId = e.currentTarget.id;
  var cardTeams = this.data.cardTeams;
  if(key){
    var touch = e.touches[0];
    endX = touch.clientX;
    endY = touch.clientY;
    console.log("startX="+startX+" endX="+endX );
    if(endX - startX == 0)
      return ;
    var res = cardTeams;
      //从右往左 

      if((endX - startX) < 0){
        for(var k in res){
          var data = res[k];
          if(res[k].id == dataId){
            var startRight = res[k].startRight;
            var change = startX - endX;
            startRight += change;
            if(startRight > maxRight)
              startRight = maxRight;
            res[k].right = startRight;
          }
        }
      }else{//从左往右
        for(var k in res){
          var data = res[k];
          if(res[k].id == dataId){
            var startRight = res[k].startRight;
            var change = endX - startX;
            startRight -= change;
            if(startRight < 0)
              startRight = 0;
            res[k].right = startRight ;
          }
        }
      }
      self.setData({
        cardTeams:cardTeams
      }); 

  }
 },
 //删除item
 delItem: function(e){
  var dataId = e.target.dataset.id;
  console.log("删除"+dataId);
  var cardTeams = this.data.cardTeams;
  var newCardTeams = [];
  for(var i in cardTeams){
    var item = cardTeams[i];
    if(item.id != dataId){
     newCardTeams.push(item);
    }
  }
  this.setData({
    cardTeams:newCardTeams
   });
 },
 onLoad: function () {
  console.log('onLoad:'+app.globalData.domain) 

 }
})

drawStart用于记录手指触碰时的位置,drawMove记录手指滑动的位置,两者的差值就是删除按钮的偏移量
drawEnd手指抬起时触发,用于设置弹回、摊开效果。目前我的是超过一半自动弹开,不足一半自动收回。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 微信小程序 向左滑动删除功能的实现

    微信小程序 向左滑动删除功能的实现 实现效果图: 实现代码: 1.wxml touch-item元素绑定了bindtouchstart.bindtouchmove事件 <view class="container"> <view class="touch-item {{item.isTouchMove ? 'touch-move-active' : ''}}" data-index="{{index}}" bindtouchst

  • 微信小程序 实现列表项滑动显示删除按钮的功能

    微信小程序 实现列表项滑动显示删除按钮的功能 微信小程序并没有提供列表控件,所以也没有iOS上惯用的列表项左滑删除的功能,SO只能自己干了. 原理很简单,用2个层,上面的层显示正常的内容,下面的层显示一个删除按钮,就是记录手指滑动的距离,动态的来移动上层元素,当然上层用绝对定位. wxml: <view class="container"> <view class="record-box" data-datetime="{{record.

  • 微信小程序删除处理详解

    没有 confrim 那怎么实现这个效果呢? 可以使用小程序里的模态框 代码: wxml: <a class="reply" wx:if="{{comment.uid==comment.login_uid}}" bindtap="del" data-cid="{{comment.c_id}}">删除</a> js: del:function(e){ var that = this; wx.showMod

  • 微信小程序左滑删除效果的实现代码

    今天我们说下微信小程序左滑删除效果的实现,现在市场上很多APP都在使用这个效果,一个listView页面,向左滑动一条item时,右侧会出现一个删除或者其他的选项,用户体验非常好,操作起来十分方便,今天我们使用微信小程序来实现这个效果....... 先看效果 要实现的效果: 1,当向左滑动时,item跟随手指像左移动,同时右侧出现两个可点击的按钮 2,当滑动距离大于按钮宽度一半松开手指时,item自动滑动到左侧显示出按钮,小于一半时item自动回到原来的位置,隐藏按钮. 思路: 1,首先页面每个

  • 微信小程序 侧滑删除(左滑删除)

    微信小程序 侧滑删除(左滑删除) 如图所示,demo是小程序的侧滑删除,这个是我在别人写的例子的基础上修改的.代码如下 js文件代码: // pages/leftSwiperDel/index.js var initdata = function (that) { var list = that.data.list for (var i = 0; i < list.length; i++) { list[i].txtStyle = "" } that.setData({ list

  • 微信小程序 删除项目工程实现步骤

    微信小程序如何删除项目工程 微信小程序现在非常火,也许是前端工程师有一个春天的来临,最近学习这部分知识,也做些小的DEMO ,这里就说下如何实现小程序的项目工程删除. 微信小程序本地创建的项目没有删除功能,我通过尝试找到了可以清理的方法,只在Mac osx测试通过,windows可以根据原理自行解决,估计原理都是一致的: 删除数据文件夹下的Default即可,属于全部清理,删除后需要重新扫二维码登录. Mac osx 下目录: $HOME/Library/Application Support/

  • 微信小程序实现滑动删除效果

    最初打算使用scroll-view实现,效果好.流畅.有惯性滑动,但由于滚动条没法去掉.无法实现上下层的帧布局,最终放弃了. 还是自己写个吧,利用手势事件.遗憾的是小程序中目前没有像Android中快速滑动事件,所以,要实现惯性滑动是不可能了. item的布局: 推荐小程序优先使用flex布局,完全够用.这也是微信推荐的. <view wx:for="{{cardTeams}}" wx:for-item="cardTeam" id="{{cardTe

  • 微信小程序实现滑动删除

    本文实例为大家分享了微信小程序实现滑动删除的具体代码,供大家参考,具体内容如下 wxml <view class="bgwhite bor-bom-f2 row just-btw alignitems  {{item.isTouchMove ? 'touch-move-active' : ''}}" wx:for="{{dataList}}" wx:key="index">   <view class="item-le

  • 微信小程序左右滑动删除事件详解

    本文实例为大家分享了微信小程序左右滑动删除事件,供大家参考,具体内容如下 效果图 上代码 <scroll-view scroll-y enable-back-to-top style="height:{{ scrollHeight }}px" >     <view>         <block wx:for="{{ list }}" wx:for-item="item" wx:for-index="in

  • 微信小程序实现滑动翻页效果(完整代码)

    微信小程序实现滑动翻页效果,效果图如下所示: 源码: <view class="mainFrame"> <swiper class="container" indicator-dots="{{indicatorDots}}" indicator-dots="{{indicatordots}}" autoplay="{{autoplay}}" interval="{{interva

  • 微信小程序实现鼠标拖动效果示例

    本文实例讲述了微信小程序实现鼠标拖动效果.分享给大家供大家参考,具体如下: 1.效果展示 2.关键代码 index.wxml文件 <view class="view" style="left:{{left}}px;top:{{top}}px;" bindtouchmove="viewTouchMove" >使用鼠标拖动我</view> index.js文件 Page({ data:{ left:'', top:'' },

  • 微信小程序实现滑动操作代码

    前言 本文使用动画组件wx.createAnimation来实现滑动操作: 1. 左滑动显示操作项区域: 2. 点击操作项触发相应方法: 3. 右滑动和点击行收起操作项: 4. 点击"删除"并确定则删除该条数据. 最终效果如下: 实现过程 1. 文件index.wxml和index.wxss代码如下,这一块比较简单,可自行查看,不做过多分析: Tips:"详情"."取号"和"删除"点击触发使用catchtap,阻止冒泡事件向上

  • 微信小程序实现跟随菜单效果和循环嵌套加载数据

    本文实例为大家分享了微信小程序实现跟随菜单效果.微信小程序循环嵌套加载数据,供大家参考,具体内容如下 效果如图: 代码如下: wxml //使用循环嵌套data数据格式写对即可 <scroll-view class="left" scroll-y> <view wx:for="{{left}}" class="leftlist {{index==_click?'yes':''}}" data-i="{{index}}&

  • 微信小程序左右滑动的实现代码

    左滑 右滑 你不再是一个人 无论你是一个程序猿还是一个程序媛,每天干的事除了coding还是coding,代码不能解决的问题(什么问题自己心里还没点abcd数嘛),探探能帮你解决.最近网上特流行一款交友软件叫探探(据说是yp软件).作为探探曾经的一名从来只浏览图片但是没有yue过的资深玩家同时又是一位热爱前端的妹子,我决定要仿一下这个app.既然是寄几开发,那还不是寄几说了算,毫无疑问整款APP的主题风格被我改成我最爱的终极少女粉了hhh,下面让我们一起来感受下探探的魅力吧~ 项目整体效果 项目

  • 微信小程序实现滑动切换自定义页码的方法分析

    本文实例讲述了微信小程序实现滑动切换自定义页码的方法.分享给大家供大家参考,具体如下: 效果如下: 这里三个图片使用了swiper组件进行轮播,下方的页码数字1.2.3会随着图片的切换变动位置 在微信小程序中我们是无法操作dom的,那么 var div = document.getElementById('id'); div.setAttribute("class", "className"); 这种方式实现. 然后我们可以考虑使用hidden或者wx:if的方式,

随机推荐