美文网首页
vue/uniapp列表右滑删除

vue/uniapp列表右滑删除

作者: laogui_ | 来源:发表于2019-12-05 19:29 被阅读0次

1:在for循环的列表view:

主要就是在列表for那层的view加滑动样式和滑动函数,增加的主要样式为content

<view class="a-address"

:class='item.isTouchMove ? "touch-move-active" : ""' 

v-for="(item,index) in addressList" :key="index"

@touchstart="touchstart($event,index)" @touchmove="touchmove($event,index)"

:data-index="index">

   <view class="content">

          <view class="left-text"  @tap="selectTap(index)">

                <view class="name-tel">{{item.post_name}} {{item.post_phone}}</view>

                 <view class="address-box">{{item.address}}</view>

           </view>

</view>

 <view class="del" @click="del(index,item.zid)">删除</view>

</view>

2:初始化数据:

startX:"",

startY:"",

记得引入import Vue from "vue",不然无法出现滑动删除。

在侧滑删除列表的最外层view增加样式:overflow:hidden;否则出现页面溢出滑动!!!!!

3:js定义滑动方法

touchstart: function (e) {

for(var i=0;i<this.addressList.length;i++){

this.addressList[i].isTouchMove=false

Vue.set(this.addressList,i,this.addressList[i])

}

  this.startX= e.touches[0].clientX

  this.startY= e.touches[0].clientY

  this.addressList= this.addressList

},

touchmove: function (e,index) {

var that = this,

  index = index,//当前索引

  startX = that.startX,//开始X坐标

  startY = that.startY,//开始Y坐标

  touchMoveX = e.touches[0].clientX,//滑动变化坐标

  touchMoveY = e.touches[0].clientY,//滑动变化坐标

  //获取滑动角度

  angle = that.angle({ X: startX, Y: startY }, { X: touchMoveX, Y: touchMoveY });

for(var i=0;i<that.addressList.length;i++){

if (Math.abs(angle) > 30) return;

if (i == index) {

if (touchMoveX > startX) //右滑

that.addressList[i].isTouchMove=false

else //左滑

that.addressList[i].isTouchMove=true

}

Vue.set(that.addressList,i,that.addressList[i])

}

// })

//更新数据

that.addressList= that.addressList

},

angle: function (start, end) {

var _X = end.X - start.X,

_Y = end.Y - start.Y

return 360 * Math.atan(_Y / _X) / (2 * Math.PI);

},

4:css样式;

/* 滑动删除 */

.touch-move-active .content,

.touch-move-active .del {

  -webkit-transform: translateX(0);

  transform: translateX(0);

}

.content {

  width: 100%;

  margin-right:0;

  -webkit-transition: all 0.4s;

  transition: all 0.4s;

  -webkit-transform: translateX(138rpx);

  transform: translateX(138rpx);

  margin-left: -130rpx;

  display: flex;

  flex-direction: row;

  padding: 27rpx 50rpx 26rpx 32rpx;

  justify-content: space-between;

}

.del {

  background-color: #c53737;

  width:138rpx;

  display: flex;

  flex-direction: column;

  align-items: center;

  justify-content: center;

  color: #fff;

  -webkit-transform: translateX(138rpx);

  transform: translateX(138rpx);

  -webkit-transition: all 0.4s;

  transition: all 0.4s;

  height: 154rpx;

  /* font-size: 0.8em; */

}

/* 滑动删除 */

相关文章

网友评论

      本文标题:vue/uniapp列表右滑删除

      本文链接:https://www.haomeiwen.com/subject/yswbwctx.html