小程序 拖拽

在小程序中,拖拽的实现已经组件化了,可以用<movable-area>和<movable-view>这对父子标签来实现,当然也可以原生js去实现。这里切说一说我如何用这对父子标签实现的拖拽功能:

 

目录

 一、了解<movable-area>和<movable-view>这对父子标签

二、 案例

 


 一、了解<movable-area>和<movable-view>这对父子标签

1、movable-area标签

(1)、属性

  • scale-area       boolean 类型      当里面的movable-view设置为支持双指缩放时,设置此值可将缩放手势生效区域修改为整个                                                     movable-area,默认是“将缩放手势生效区域修改为整个movable-area”。

(2)、注意事项

  • movable-area 必须设置width和height属性,不设置默认为10px;
  • 当movable-view小于movable-area时,movable-view的移动范围是在movable-area内;
  • 当movable-view大于movable-area时,movable-view的移动范围必须包含movable-area(x轴方向和y轴方向分开考虑);

2、movable-view标签

(1)、属性

  • disabled           boolean    是否禁用,默认是“禁用”;
  • inertia               boolean    movable-view是否带有惯性,默认是“带有惯性”;
  • out-of-bounds   boolean    是否允许movable-view超出movable-area,默认是“允许超出movable-area”;
  • scale                 boolean    是否支持双指缩放,默认是“缩放手势生效区域是在movable-view内”;
  • animation          boolean    是否使用动画,默认是“支持动画”。

(2)、别的属性官网给的解释还是很好理解的:

属性类型默认值必填说明
directionstringnonemovable-view的移动方向,属性值有all、vertical、horizontal、none
xnumber 定义x轴方向的偏移,如果x的值不在可移动范围内,会自动移动到可移动范围;改变x的值会触发动画
ynumber 定义y轴方向的偏移,如果y的值不在可移动范围内,会自动移动到可移动范围;改变y的值会触发动画
dampingnumber20阻尼系数,用于控制x或y改变时的动画和过界回弹的动画,值越大移动越快
frictionnumber2摩擦系数,用于控制惯性滑动的动画,值越大摩擦力越大,滑动越快停止;必须大于0,否则会被设置成默认值
scale-minnumber0.5定义缩放倍数最小值
scale-maxnumber10定义缩放倍数最大值
scale-valuenumber1定义缩放倍数,取值范围为 0.5 - 10
bindchangeeventhandle 拖动过程中触发的事件,event.detail = {x, y, source}
bindscaleeventhandle 缩放过程中触发的事件,event.detail = {x, y, scale},x和y字段在2.1.0之后支持
htouchmoveeventhandle 初次手指触摸后移动为横向的移动时触发,如果catch此事件,则意味着touchmove事件也被catch
vtouchmoveeventhandle 初次手指触摸后移动为纵向的移动时触发,如果catch此事件,则意味着touchmove事件也被catch

(3)、bindchange 方法返回值中的source表示:产生移动的原因。原因种类如下:

说明
touch拖动
touch-out-of-bounds超出移动范围
out-of-bounds超出移动范围后的回弹
friction惯性
空字符串setData

(4)、注意事项

  • movable-view 必须设置width和height属性,不设置默认为10px
  • movable-view 默认为绝对定位,top和left属性为0px

 


二、 案例

//index.wxml
 
<view>
      <movable-area class="move_w" scale-area>
        <movable-view class="move_b" direction="all" x="10" y="10" damping="20" friction="2" 
          scale-min="0.5" scale-max="10" scale-value="1" 
          inertia out-of-bounds scale animation 
          bindchange="moveEvent">
          <view class="advertisement_title">薛之谦同款</view>
          <view class="advertisement_content">
            ......
          </view>
        </movable-view>
        <view>love</view>
      </movable-area>
  </view>
// index.js

Page({
  data:{},
  moveEvent: function(e){
    console.log("让我们一起摇摆~" + JSON.stringify(e.detail));
    
  }
})

控制台输出:

 

随着小程序的发展,不知道以后这个功能会怎样呢……

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值