支付寶小程序組件 可移動視圖容器·movable-view

2020-09-18 10:48 更新

版本要求:基礎(chǔ)庫 1.11.0 或更高版本;若版本較低,建議做 兼容處理。

可移動的視圖容器,在頁面中可以拖拽滑動。movable-view 必須在 movable-area 組件中,并且必須是直接子節(jié)點(diǎn),否則不能移動。

注意:

  • movable-view 必須設(shè)置 width 和 height 屬性,不設(shè)置默認(rèn)為 10px。
  • movable-view 默認(rèn)為絕對定位(請不要修改),top 和 left 屬性為 0px。
  • 當(dāng) movable-view 小于 movable-area 時(shí),movable-view 的移動范圍是在 movable-area 內(nèi);當(dāng) movable-view 大于 movable-area 時(shí),movable-view 的移動范圍必須包含 movable-area (x 軸方向和 y 軸方向分開考慮)。

掃碼體驗(yàn)

示例代碼

<!-- API-DEMO page/component/movable-view.axml -->
<view class="page">
  <view class="page-description">可移動視圖</view>
  <view class="page-section">
    <view class="page-section-title">movable-view區(qū)域小于movable-area</view>
    <view class="page-section-demo">
      <movable-area>
        <movable-view x="{{x}}" y="{{y}}" direction="all">movable-view</movable-view>
      </movable-area>
    </view>
    <button style="margin-left: 10px; mrigin-right: 10px;" type="primary" onTap="onButtonTap">點(diǎn)擊移動到 (30px, 30px)</button>
  </view>
  <view class="page-section">
    <view class="page-section-title">movable-view區(qū)域大于movable-area</view>
    <view class="page-section-demo">
      <movable-area>
        <movable-view class="max" direction="all">movable-view</movable-view>
      </movable-area>
    </view>
  </view>
  <view class="page-section">
    <view class="page-section-title">只可以橫向移動</view>
    <view class="page-section-demo">
     <movable-area>
        <movable-view direction="horizontal">
          movable-view
        </movable-view>
      </movable-area>
    </view>
  </view>
  <view class="page-section">
    <view class="page-section-title">只可以縱向移動</view>
    <view class="page-section-demo">
     <movable-area>
        <movable-view direction="vertical">
          movable-view
        </movable-view>
      </movable-area>
    </view>
  </view>
</view>
// API-DEMO page/component/movable-view.js
Page({
  data: {
    x: 0,
    y: 0,
  },
  onButtonTap() {
    const { x, y } = this.data;
    if (x === 30) {
      this.setData({
        x: x + 1,
        y: y + 1,
      });
    } else {
      this.setData({
        x: 30,
        y: 30
      });
    }
  },
});
// API-DEMO page/component/movable-view.json
{
  "allowsBounceVertical": "NO"
}
/* API-DEMO page/component/movable-view.acss */
movable-area {
  height: 400rpx;
  width: 400rpx;
  margin: 50rpx 0rpx 0 50rpx;
  background-color: #ccc;
  overflow: hidden;
}


movable-view {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 200rpx;
  width: 200rpx;
  background: #108ee9;
  color: #fff;
}


.max {
  width: 600rpx;
  height: 600rpx;
}

屬性

屬性名 類型 默認(rèn)值 描述 最低版本
direction String none movable-view 的移動方向,屬性值有 all、vertical、horizontal、none。 -
inertia Boolean false movable-view 是否帶有慣性。 1.20.0
out-of-bounds Boolean false 超過可移動區(qū)域后,movable-view 是否還可以移動。 1.20.0
x Number 0 定義 x 軸方向的偏移,會換算為 left 屬性,如果 x 的值不在可移動范圍內(nèi),會自動移動到可移動范圍。 -
y Number 0 定義 y 軸方向的偏移,會換算為 top 屬性,如果 y 的值不在可移動范圍內(nèi),會自動移動到可移動范圍。 -
damping Number 20 阻尼系數(shù),用于控制x或y改變時(shí)的動畫和過界回彈的動畫,值越大移動越快。 1.20.0
friction Number 2 摩擦系數(shù),用于控制慣性滑動的動畫,值越大摩擦力越大,滑動越快停止;必須大于 0,否則會被設(shè)置成默認(rèn)值。 1.20.0
disabled Boolean false 是否禁用。 -
scale Boolean false 是否支持雙指縮放,默認(rèn)縮放手勢生效區(qū)域是在 movable-view 內(nèi)。 1.20.0
scale-min Number 0.5 定義縮放倍數(shù)最小值。 1.20.0
scale-max Number 10 定義縮放倍數(shù)最大值。 1.20.0
scale-value Number 1 定義縮放倍數(shù),取值范圍為 0.5 - 10。 1.20.0
animation Boolean false 是否使用動畫。 1.20.0
onTouchStart EventHandle - 觸摸動作開始,事件會向父節(jié)點(diǎn)傳遞。 1.11.5
catchTouchStart EventHandle - 觸摸動作開始,事件僅作用于組件,不向父節(jié)點(diǎn)傳遞。 1.11.5
onTouchMove EventHandle - 觸摸移動事件,事件會向父節(jié)點(diǎn)傳遞。 1.11.5
catchTouchMove EventHandle - 觸摸移動事件,事件僅作用于組件,不向父節(jié)點(diǎn)傳遞。 1.11.5
onTouchEnd EventHandle - 觸摸動作結(jié)束,事件會向父節(jié)點(diǎn)傳遞。 1.11.5
catchTouchEnd EventHandle - 觸摸動作結(jié)束,事件僅作用于組件,不向父節(jié)點(diǎn)傳遞。 1.11.5
onTouchCancel EventHandle - 觸摸動作被打斷,如來電提醒、彈窗。 1.11.5
onChange EventHandle - 拖動過程中觸發(fā)的事件,event.detail = {x: x, y: y, source: source},其中 source 表示產(chǎn)生移動的原因,值可為 touch(拖動)。 -
onChangeEnd EventHandle - 拖動結(jié)束觸發(fā)的事件,event.detail = {x: x, y: y} -
onScale EventHandle - 縮放過程中觸發(fā)的事件,event.detail = {x, y, scale}。 1.20.0

onChange返回值detail.source

source字段表示產(chǎn)生移動的原因

說明
touch 拖動。
touch-out-of-bounds 超出移動范圍。
out-of-bounds 超出移動范圍后的回彈。
friction 慣性。
空字符串 setData。

說明:冒泡事件,請查看 事件介紹 中的 事件類型

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號