微信小程序> 小程序拖拽

小程序拖拽

浏览量:494 时间: 来源:mChales_Liu

在小程序中,拖拽的实现已经组件化了,可以用<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.jsPage({  data:{},  moveEvent: function(e){    console.log("让我们一起摇摆~" + JSON.stringify(e.detail));      }})

控制台输出:

 

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

 

 

 

 

 

 

 

 

 

 

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎