KMovableArea / KMovableView

成对使用的组件,MovableView 可以在 MovableArea 的范围内拖拽移动、缩放。对齐微信小程序的 movable-areaKMovableArea / KMovableView - 图1movable-viewKMovableArea / KMovableView - 图2

需要注意,在实际使用中,MovableArea 必须是 MovableView 的直接父亲

使用指南

  1. import {KMovableArea, KMovableView} from 'kbone-ui'
  1. <KMovableArea class="movable-area">
  2. <KMovableView
  3. ref="movableView"
  4. :x="x"
  5. :y="y"
  6. class="movable-view"
  7. direction="all"
  8. @change="onChange"
  9. @scale="onScale"
  10. @htouchmove="onMove"
  11. @vtouchmove="onMove"
  12. >
  13. view
  14. </KMovableView>
  15. </KMovableArea>

示例

手机扫码查看示例

https://wechat-miniprogram.github.io/kboneui/ui/#/movable

使用参数

KMovableArea

属性类型默认值必填说明
scale-areaBooleanfalse当里面的movable-view设置为支持双指缩放时,设置此值可将缩放手势生效区域修改为整个movable-area

KMovableView

属性类型默认值必填说明
directionstringnonemovable-view的移动方向,属性值有all、vertical、horizontal、none
inertiabooleanfalsemovable-view是否带有惯性
out-of-boundsbooleanfalse超过可移动区域后,movable-view是否还可以移动
xnumber定义x轴方向的偏移,如果x的值不在可移动范围内,会自动移动到可移动范围;改变x的值会触发动画
ynumber定义y轴方向的偏移,如果y的值不在可移动范围内,会自动移动到可移动范围;改变y的值会触发动画
dampingnumber20阻尼系数,用于控制x或y改变时的动画和过界回弹的动画,值越大移动越快
frictionnumber2摩擦系数,用于控制惯性滑动的动画,值越大摩擦力越大,滑动越快停止;必须大于0,否则会被设置成默认值
disabledbooleanfalse是否禁用
scalebooleanfalse是否支持双指缩放,默认缩放手势生效区域是在movable-view内
scale-minnumber0.5定义缩放倍数最小值
scale-maxnumber10定义缩放倍数最大值
scale-valuenumber1定义缩放倍数,取值范围为 0.5 - 10
animationbooleantrue是否使用动画。设置为 false 时存在问题,参考下面已知问题
changeevent拖动过程中触发的事件,event.detail = {x, y, source}
scaleevent缩放过程中触发的事件,event.detail = {x, y, scale}
htouchmoveevent初次手指触摸后移动为横向的移动时触发
vtouchmoveevent初次手指触摸后移动为纵向的移动时触发

bindchange 返回的 source 表示产生移动的原因

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

已知问题

  • MovableView 的属性 animation 被设置为 false 时,按照 Vue 的现有逻辑,animation 属性将在 DOM 上被移除,进而小程序端的 movable-view 读取不到开发者设置的 animation=false,并回落到默认值 true。这导致 :animation="false" 在小程序端设置无效。目前可以将 animation 设置为空字符串来代替:
  1. <KMovableView :animation="''" />