W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
解釋?zhuān)嚎梢苿?dòng)的視圖容器,在頁(yè)面中可以拖拽滑動(dòng)。movable-view 必須在 movable-area 組件中,并且必須是直接子節(jié)點(diǎn),否則不能移動(dòng)。
屬性名 | 類(lèi)型 | 默認(rèn)值 | 必填 | 說(shuō)明 | ||
---|---|---|---|---|---|---|
direction |
String |
none |
否 |
movable-view 的移動(dòng)方向,屬性值有 all 、 vertical 、 horizontal 、 none |
||
inertia |
Boolean |
false |
否 |
movable-view 是否帶有慣性 |
||
out-of-bounds |
Boolean |
false |
否 |
超過(guò)可移動(dòng)區(qū)域后,movable-view 是否還可以移動(dòng)。 |
||
x |
Number |
否 |
定義 x 軸方向的偏移,如果 x 的值不在可移動(dòng)范圍內(nèi),會(huì)自動(dòng)移動(dòng)到可移動(dòng)范圍;改變 x 的值會(huì)觸發(fā)動(dòng)畫(huà)。 |
|||
y |
Number |
否 |
定義 y 軸方向的偏移,如果 y 的值不在可移動(dòng)范圍內(nèi),會(huì)自動(dòng)移動(dòng)到可移動(dòng)范圍;改變 y 的值會(huì)觸發(fā)動(dòng)畫(huà)。 |
|||
damping |
Number |
20 |
否 |
阻尼系數(shù),用于控制 x 或 y 改變時(shí)的動(dòng)畫(huà)和過(guò)界回彈的動(dòng)畫(huà),值越大移動(dòng)越快。 |
||
friction |
Number |
2 |
否 |
摩擦系數(shù),用于控制慣性滑動(dòng)的動(dòng)畫(huà),值越大摩擦力越大,滑動(dòng)越快停止;必須大于 0,否則會(huì)被設(shè)置成默認(rèn)值。 |
||
disabled |
Boolean |
false |
否 |
是否禁用 |
||
scale |
Boolean |
false |
否 |
是否支持雙指縮放,默認(rèn)縮放手勢(shì)生效區(qū)域是在 movable-view 內(nèi)。 |
||
scale-min |
Number |
0.5 |
否 |
定義縮放倍數(shù)最小值 |
||
scale-max |
Number |
10 |
否 |
定義縮放倍數(shù)最大值 |
||
scale-value |
Number |
1 |
否 |
定義縮放倍數(shù),取值范圍為 0.5 - 10 。 |
||
animation |
Boolean |
true |
否 |
是否使用動(dòng)畫(huà) |
||
bindchange |
EventHandle |
否 |
拖動(dòng)過(guò)程中觸發(fā)的事件,event.detail = {x: x, y: y, source: source},其中 source 表示產(chǎn)生移動(dòng)的原因,值可為 touch(拖動(dòng))。 |
|||
bindscale |
EventHandle |
否 |
縮放過(guò)程中觸發(fā)的事件,event.detail = {x: x, y: y, scale: scale} |
|||
htouchmove |
EventHandle |
否 |
手指初次觸摸后發(fā)生橫向移動(dòng),如果 catch 此事件,則意味著 touchmove 事件也被 catch |
|||
vtouchmove |
EventHandle |
否 |
手指初次觸摸后發(fā)生縱向移動(dòng),如果 catch 此事件,則意味著 touchmove 事件也被 catch |
值 | 說(shuō)明 |
---|---|
all |
水平方向和垂直方向 |
vertical |
垂直方向 |
horizontal |
水平方向 |
none |
不可移動(dòng) |
代碼示例 1: movable-view 區(qū)域小于 movable-area
<view class="wrap">
<view class="card-area">
<view class="top-description border-bottom">
movable-view區(qū)域小于movable-area
</view>
<movable-area>
<movable-view x="{=x1=}" y="{=y1=}" damping="20" disabled="false" direction="all">text</movable-view>
</movable-area>
<button bind:tap="move" class="move-button" type="primary">點(diǎn)擊移動(dòng)到 (50px, 50px)</button>
</view>
</view>
Page({
data: {
x1: 30,
y1: 30,
},
move() {
this.setData({
x1: 50,
y1: 50
})
}
});
代碼示例 2:movable-view 區(qū)域大于 movable-area<view class="wrap">
<view class="card-area">
<view class="top-description border-bottom">
movable-view區(qū)域大于movable-area
</view>
<movable-area>
<!-- 添加大于movable-area的class -->
<movable-view x="{=x=}" y="{=y=}" class="bigger-area" direction="all">text</movable-view>
</movable-area>
</view>
</view>
Page({
data: {
x: 30,
y: 30
},
});
movable-area {
width: 3.88rem;
height: 2.18rem;
background-color: #fff;
overflow: hidden;
margin: 0;
border-radius: .05rem;
}
movable-view {
background-color: #5B9FFF;
color: #fff;
border-radius: .05rem;
display: flex;
align-items: center;
justify-content: center;
}
.bigger-area {
width: 4.8rem;
height: 2.8rem;
}
代碼示例 3:只可以橫向移動(dòng)
<view class="card-area">
<view class="top-description border-bottom">
只可以橫向移動(dòng)
</view>
<movable-area htouchmove>
<movable-view x="{=x=}" y="{=y=}" direction="horizontal">text</movable-view>
</movable-area>
</view>
Page({
data: {
x: 30,
y: 30
},
});
代碼示例 4:只可以縱向移動(dòng)<view class="card-area">
<view class="top-description border-bottom">
只可以縱向移動(dòng)
</view>
<movable-area vtouchmove>
<movable-view x="{=x=}" y="{=y=}" direction="vertical">text</movable-view>
</movable-area>
</view>
Page({
data: {
x: 30,
y: 30
},
});
代碼示例 5: 可超出邊界<view class="wrap">
<view class="card-area">
<view class="top-description border-bottom">
可超出邊界
</view>
<movable-area>
<movable-view x="{=x=}" y="{=y=}" direction="all" out-of-bounds>text</movable-view>
</movable-area>
</view>
</view>
Page({
data: {
x: 30,
y: 30
},
});
代碼示例 6: 帶有慣性
<view class="wrap">
<view class="card-area">
<view class="top-description border-bottom">
帶有慣性
</view>
<movable-area>
<movable-view x="{=x=}" y="{=y=}" direction="all" inertia friction="0.5">text</movable-view>
</movable-area>
</view>
</view>
Page({
data: {
x: 30,
y: 30
},
});
代碼示例 7: 可放縮
<view class="wrap">
<view class="card-area">
<view class="top-description border-bottom">
可放縮
</view>
<movable-area scale-area="true">
<movable-view
x="{=x=}"
y="{=y=}"
scale
scale-min="0.5"
scale-max="4"
scale-value="{{scale}}"
direction="all"
animation="false"
bindchange="onChange"
bindscale="onScale">
text
</movable-view>
</movable-area>
<button bind:tap="scale" class="scale-button" type="primary">點(diǎn)擊放大3倍</button>
</view>
</view>
Page({
data: {
x: 30,
y: 30,
scale: 1
},
move() {
this.setData({
x1: 50,
y1: 50
})
},
scale() {
this.setData({
scale: 3
})
},
onChange(e) {
console.log(e.detail)
},
onScale(e) {
console.log(e.detail)
}
});
參考示例 1:可懸浮菜單
<view class="wrap">
<movable-area style="height: {{height}}px; width: {{width}}px; background-color: #f5f5f5">
<movable-view x="{=x=}" y="{=y=}" direction="all" animation="false" bindchange="onChange" bindscale="onScale" scale scale-min="0.5" scale-max="4">
菜單
</movable-view>
</movable-area>
</view>
Page({
data: {
x: 30,
y: 30,
},
onShow() {
swan.getSystemInfo({
success: res => {
console.log('getSystemInfo success', res);
this.setData({
'width': res.windowWidth,
'height': res.windowHeight
});
},
fail: err => {
console.log('getSystemInfo fail', err);
}
});
}
});
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: