本文实例为大家分享了小程序实现左滑删除效果的具体代码,供大家参考,具体内容如下
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 如果大家想了解的更清楚可以查看帮助文档的哦
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
小程序,左滑删除
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。