微信小程序实现拖拽容器Y轴改变,X轴不变

1. wxml使用movable-area、movable-view组件

<movable-area class="movablearea" style="height: {{movableareHeight}}px; top: {{movableareTop}}px;">
    <movable-view x="{{x}}" y="{{y}}" direction="all" bindtap="goCart" bindtouchend="bindtouchend" bindchange="movablechange" bindtouchstart="bindtouchstart">
    </movable-view>
</movable-area>

2. 动态计算movableareHeight、movableareTop来设置拖拽区域宽高,拖拽区域movable-area 必须设置width和height属性,不设置默认为10px;movable-view设置初始位置 x,y  表示x轴距离和y轴距离,direction设置可移动方向 all为所有方向;

3. js设置拖拽逻辑


    movablechange(e){
        // 拖拽过程中设置Y轴值
      if(!this.data.isStop){
        this.setData({
          y: e.detail.y
        })
      }
    },
    bindtouchstart(){
        // 设置拖拽状态
      this.data.isStop = false
    },
    bindtouchend(){
    // 拖拽结束设置x轴值回到原来位置
      this.data.isStop = true
      this.setData({
         x: this.data.x,
      })
    },

4. 设置wxss样式


.movablearea{
  width: 100vw;
  pointer-events: none;
  position: fixed;
  left: 0;
  z-index: 99;
}
movable-view {
  pointer-events: auto;
  width: 92rpx;
  height: 92rpx;
  background: #FFFFFF;
  box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(79,0,0,0.2);
  border-radius: 20rpx;
}

其中给movable-area设置pointer-events: none;给movable-view设置pointer-events: auto;可实现事件穿透,保证拖拽区域下面的事件可以触发;

以上就是微信小程序实现拖拽容器Y轴改变,X轴不变的方法,我们拖拽容器到任意位置,松手后y轴不变,x轴回到原来的位置,即拖拽行为结束,横向位置不变。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值