dragStartPredicate
更新日: 2019-12-19
アイテムがドラッグされ、移動し始めたタイミングを決める関数です。 デフォルトでは、いくつかのオプションを持ったビルトインのプレディケート(真偽値を返す関数)を使います。
- 初期値 :
{distance: 0, delay: 0, handle: false}
- 値 :
function
、object
オブジェクトが渡された場合は、 デフォルトのプレディケートを使用します。 以下のプロパティを指定することができます。
distance
: number- 初期値 :
0
- ドラッグを開始させるのに必要な移動量(px)です。
- 初期値 :
delay
: number- 初期値 :
0
- ドラッグを開始させるのに必要なドラッグ時間(ミリ秒)です。
- 初期値 :
handle
: string, boolean- 初期値 :
false
- ドラッグの開始イベントのターゲット要素となるセレクタです。
- 初期値 :
関数を渡す場合、ドラッグ開始ロジックを完全にカスタマイズすることができます。 ユーザーがアイテムをドラッグし始めると、 このプレディケート関数はtrue
またはfalse
を返すまで続けて呼び出されます。 true
を返した場合、アイテムがドラッグされるたびに、アイテムが移動します。 false
を返した場合、アイテムは全く動きません。 この関数は、true
または、false
を返すと、 再度ドラッグされるまで呼び出されないことに注意してください。
プレディケート関数は2つの引数を受け取ります。
item
: Muuri.Item- ドラッグ中のアイテムです。
event
: object- ドラッグイベント(Hammer.jsのイベントです)
// デフォルトのプレディケートの設定です。
var grid = new Muuri(elem, {
dragStartPredicate: {
distance: 10,
delay: 100,
handle: '.foo, .bar'
}
});
// 独自のプレディケートを指定します。
var grid = new Muuri(elem, {
dragStartPredicate: function (item, e) {
// アイテムが1秒間ドラッグされた後に、アイテムの移動を開始します。
if (e.deltaTime > 1000) {
return true;
}
}
});
デモ
ドラッグして1秒後にアイテムを移動することができます。
アイテム1
アイテム2
アイテム3
JavaScript
var grid = new Muuri('.grid', {
dragEnabled: true,
dragStartPredicate: function (item, e) {
// アイテムが1秒間ドラッグされた後に、アイテムの移動を開始します。
if (e.deltaTime > 1000) {
return true;
}
}
});
HTML
<div class="grid">
<div class="item">
<div class="item-content">アイテム1</div>
</div>
<div class="item">
<div class="item-content">アイテム2</div>
</div>
<div class="item">
<div class="item-content">アイテム3</div>
</div>
</div>
CSS
.grid {
position: relative;
}
.item {
display: block;
position: absolute;
width: 100px;
height: 100px;
margin: 5px;
z-index: 1;
color: #000;
border: 1px solid #000;
}
.item-content {
position: relative;
width: 100%;
height: 100%;
}
© 2015 Haltu Oy. Licensed under the MIT license
このコンテンツはHaltuによるMuuriドキュメントを翻訳/改変したものです。