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


Posted in Javascript onMarch 30, 2020

最近做微信小程序项目遇到左滑动效果,比如在我的收藏页面,我的历史浏览记录页面,我的购物车页面,大多数都会用到这种效果,我把代码复制出来,供大家参考,用的时候直接用模板,再此基础上修改就行。

wxml中的代码:

<view class="touch-item {{item.isTouchMove ? 'touch-move-active' : ''}}" data-index=" {{index}}" bindtouchstart="touchstart" bindtouchmove="touchmove" wx:for="{{items}}" wx:key="">
 <view class="content">
 <view class='com'>
 <view class='tp'>
  <image src="{{item.image_src}}" class='img' />
 </view>
 <view class='txt'>
  <view class='tit'>{{item.goods_name}}</view>

  <view class='bot'>

  <block wx:if="{{item.marketable=='true'}}">
  <view class="pri">
  <text class="new-price">¥{{item.goods_price}}</text>
  <text class="old-price">¥{{item.mktprice}}</text>
  </view>
  <navigator class='a'>
  <label class='ti1'>可使用优惠券</label>
  </navigator>
  </block>
  <block wx:else>
  <navigator class='a'>
  <label class='ti'>对不起该商品已下架</label>
  </navigator>
  </block>

  </view>
 </view>
 </view>
 </view>
<view class="del" catchtap="del" data-index="{{index}}" data-productid="{{item.product_id}}" data-goodsid="{{item.goods_id}}">删除</view>
</view>

我这是对完接口之后的代码,循环items,然后用{{item.}}取到下面的值,并且用了一个判断,如果后台返回来的字段值marketable==‘true',让其显示商品的销售价和原价,否则显示该商品已下架。

js中的代码:

data: {
 startX: 0, //开始坐标
 startY: 0
 },
 touchstart: function(e) {
 //开始触摸时 重置所有删除
 this.data.items.forEach(function(v, i) {
 if (v.isTouchMove) //只操作为true的
 v.isTouchMove = false;
 })
 this.setData({
 startX: e.changedTouches[0].clientX,
 startY: e.changedTouches[0].clientY,
 items: this.data.items
 })
 },
 //滑动事件处理
 touchmove: function(e) {
 var that = this,
 index = e.currentTarget.dataset.index, //当前索引
 startX = that.data.startX, //开始X坐标
 startY = that.data.startY, //开始Y坐标
 touchMoveX = e.changedTouches[0].clientX, //滑动变化坐标
 touchMoveY = e.changedTouches[0].clientY, //滑动变化坐标
 //获取滑动角度
 angle = that.angle({
 X: startX,
 Y: startY
 }, {
 X: touchMoveX,
 Y: touchMoveY
 });
 that.data.items.forEach(function(v, i) {
 v.isTouchMove = false
 //滑动超过30度角 return
 if (Math.abs(angle) > 30) return;
 if (i == index) {
 if (touchMoveX > startX) //右滑
  v.isTouchMove = false
 else //左滑
  v.isTouchMove = true
 }
 })
 //更新数据
 that.setData({
 items: that.data.items
 })
 },

 /**
 * 计算滑动角度
 * @param {Object} start 起点坐标
 * @param {Object} end 终点坐标
 */
 angle: function(start, end) {
 var _X = end.X - start.X,
 _Y = end.Y - start.Y
 //返回角度 /Math.atan()返回数字的反正切值
 return 360 * Math.atan(_Y / _X) / (2 * Math.PI);
 },

wxml中的代码:

.touch-item {
 background-color: #fff;
 margin-top: 20rpx;
 display: flex;
 justify-content: space-between;
 width: 100%;
 overflow: hidden;
 box-sizing: border-box;
}

.content {
 width: 100%;
 -webkit-transition: all 0.4s;
 transition: all 0.4s;
 -webkit-transform: translateX(180rpx);
 transform: translateX(180rpx);
 margin-left: -180rpx;
}

.touch-move-active .content, .touch-move-active .del {
 -webkit-transform: translateX(0);
 transform: translateX(0);
}

.com {
 padding: 25rpx;
 height: 210rpx;
}

.tp {
 background-color: white;
 float: left;
}

.img {
 width: 210rpx;
 height: 210rpx;
 display: inline-block;
 vertical-align: middle;
 border-radius: 15rpx;
}

.txt {
 width: 420rpx;
 margin-left: 270rpx;
 position: relative;
}

.txt .tit {
 font-size: 28rpx;
 display: -webkit-box;
 -webkit-box-orient: vertical;
 -webkit-line-clamp: 2;
 overflow: hidden;
}

.txt .bot {
 width: 100%;
 font-size: 24rpx;
 margin-top: 20rpx;
}

.ti1 {
 margin-top: 15rpx;
 font-size: 23rpx;
 background-color: #fce64c;
 padding: 10rpx;
 display: inline-block;
}

.ti {
 margin-top: 35rpx;
 font-size: 28rpx;
 display: inline-block;
 color: #a2a2a2;
}

.del {
 background-color: red;
 width: 180rpx;
 display: flex;
 flex-direction: column;
 align-items: center;
 justify-content: center;
 color: #fff;
 -webkit-transform: translateX(180rpx);
 transform: translateX(180rpx);
 -webkit-transition: all 0.4s;
 transition: all 0.4s;
}

.new-price {
 font-weight: 600;
 color: #ff503c;
 font-size: 35rpx;
}

.old-price {
 margin-left: 30rpx;
 text-decoration: line-through;
 font-size: 28rpx;
 color: #b1b1b1;
}

为大家推荐现在关注度比较高的微信小程序教程一篇:《微信小程序开发教程》小编为大家精心整理的,希望喜欢。

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

Javascript 相关文章推荐
浅析JavaScript原型继承的陷阱
Dec 03 Javascript
javascript通过className来获取元素的简单示例代码
Jan 10 Javascript
jQuery替换textarea中换行的方法
Jun 10 Javascript
简单了解JavaScript操作XPath的一些基本方法
Jun 03 Javascript
JavaScript程序设计高级算法之动态规划实例分析
Nov 24 Javascript
详解babel升级到7.X采坑总结
May 12 Javascript
Vue程序调试的方法
Jun 17 Javascript
js canvas实现5张图片合成一张图片
Jul 15 Javascript
jQuery实现的记住帐号密码功能完整示例
Aug 03 jQuery
vue实现pdf文档在线预览功能
Nov 26 Javascript
VUE中使用HTTP库Axios方法详解
Feb 05 Javascript
Vue axios获取token临时令牌封装案例
Sep 11 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
Jul 25 #jQuery
小程序实现左滑删除效果
Jul 25 #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
You might like
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
2014/06/12 PHP
linux下实现定时执行php脚本
2015/02/13 PHP
php获取ip及网址的简单方法(必看)
2017/04/01 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
2017/04/09 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
List Installed Software Features
2007/06/11 Javascript
jquery 锁定弹出层实现代码
2010/02/23 Javascript
一些经常会用到的Javascript检测函数
2010/05/31 Javascript
javaScript同意等待代码实现心得
2011/01/01 Javascript
js 火狐下取本地路径实现思路
2013/04/02 Javascript
网站内容禁止复制和粘贴、另存为的js代码
2014/02/26 Javascript
浅谈javascript中this在事件中的应用
2015/02/15 Javascript
JavaScript基础——使用Canvas绘图
2016/11/02 Javascript
jQuery上传插件webupload使用方法
2017/08/01 jQuery
vue中使用cropperjs的方法
2018/03/01 Javascript
微信小程序之裁剪图片成圆形的实现代码
2018/10/11 Javascript
[53:20]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 VG vs OG
2018/04/03 DOTA
Python完全新手教程
2007/02/08 Python
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
Python读取系统文件夹内所有文件并统计数量的方法
2018/10/23 Python
python过滤中英文标点符号的实例代码
2019/07/15 Python
SpringBoot实现登录注册常见问题解决方案
2020/03/04 Python
使用keras实现Precise, Recall, F1-socre方式
2020/06/15 Python
CSS3 二级导航菜单的制作的示例
2018/04/02 HTML / CSS
阿联酋团购网站:Groupon阿联酋
2016/10/14 全球购物
联想韩国官网:Lenovo Korea
2018/05/10 全球购物
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
上海期货面试题
2014/01/31 面试题
高中生自我鉴定范文
2013/10/30 职场文书
高一历史教学反思
2014/01/13 职场文书
中学教师教育感言
2014/02/21 职场文书
大学生精神文明先进个人事迹材料
2014/05/02 职场文书
警告通知
2015/04/25 职场文书
欠款起诉书范文
2015/05/19 职场文书
幼儿园保育员随笔
2015/08/14 职场文书
Go语言中的UTF-8实现
2021/04/26 Golang