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ドキュメントを翻訳/改変したものです。