drag.origin - ドラッグイベントの原点座標を指定する

投稿日: / 更新日:

d3.jsのdrag.originは、ドラッグ操作の原点となる位置座標を指定するためのメソッドです。値は{x:n, y:n}という形のオブジェクトを戻り値とする関数で指定します。原点を設定した場合、ドラッグ操作開始時の位置座標が毎回その位置座標になります。設定しない場合は、常にドキュメントの左上が原点の位置座標となります。

サンプルコード

<div>ドラッグ対象の要素</div>
// ドラッグ操作のインスタンスを作成
var drag = d3.behavior.drag() ;

// ドラッグ操作の原点座標を指定する
drag.origin( function( d, i ) {
	// d=要素に関連付けられたデータ
	// i=インデックス番号
	// this=要素

	// x、yプロパティに座標となる数値を指定したオブジェクトを戻り値とすること
	return { x:500, y:3000 } ;
} ) ;

// [drag]をイベントハンドラとするイベントリスナーを指定しないと意味がありません
drag.on( "drag", function() {
	// ...
} ) ;

// div要素に対して、call()メソッドでドラッグ操作を適用
select( "div" ).call( drag ) ;

デモ

原点の位置座標を設定するかしないか、どちらかのボタンを押してからドラッグ操作をして、違いを確認してみて下さい。

構文

instance = drag.origin( function )

引数

項目説明
functionxプロパティにX座標、yプロパティにY座標の数値を指定したオブジェクトリテラル(例:{x:100,y:500})。これを戻り値とする関数を引数に指定する。この関数は、第1引数に対象要素に関連付けられたデータ、第2引数にインデックス番号をとる。

戻り値

項目説明
instanceインスタンスが戻り値となる。

ノート

関数で指定する
引数は関数で指定しなければいけない。オブジェクトリテラルをそのまま指定しても、エラーとなる。