画像やエレメントなどをドラッグできるようにする(script.aculo.us)

説明

ページ上のエレメントや画像をドラッグできるようにするにはscript.aculo.usライブラリを使うと便利です。script.aculo.usではDraggable()にドラッグ対象となるエレメントのID名またはオブジェクトを指定するだけでドラッグすることが可能になります。
 オプションを指定することで、ドラッグ時の処理を設定することができます。オプションはDraggable()の2番目のパラメータで指定します。revertオプションでtrueを指定するとドラッグ後に元の位置に戻ります。snapを指定すると関数の戻り値に応じた座標にスナップするようにドラッグできるようになります。
JavaScriptテクニック ブック  詳しい解説などはJavaScriptテクニック ブックを参照してください。

サンプルコード [実行]

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>JavaScript Sample</title>
<link rel="stylesheet" type="text/css" href="main.css" media="all">
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript" src="scriptaculous.js"></script>
<script type="text/javascript" src="main.js"></script>
</head>
<body>
<h1>画像やエレメントなどをドラッグできるようにする</h1>
<div id="dragBox1">ここは普通にドラッグできます</div>
<div id="dragBox2">ここはドラッグすると元の位置に戻ります</div>
<img src="images/icon.gif" id="dragImage">
</body>
</html>

window.onload = function(){
new Draggable("dragBox1");
new Draggable("dragBox2", { revert:true } );
new Draggable("dragImage", { snap:function(x,y){
return [Math.floor(x / 20)*20, Math.floor(y / 20)*20]; }});
}