ドラッグ範囲を制限する

にエレメントをドラッグする際にドラッグ可能範囲を制限することができます。移動範囲は横方向と縦方向を別々に指定することができます。
まず、横方向を制限してみましょう。横方向の移動範囲を制限するにはnew YAHOO.util.DD()によって生成されたオブジェクトに対してsetXConstraint()を使います。setXConstraint()の最初のパラメータに左側のX座標値、2番目のパラメータに右側のY座標値を指定します。これで、指定した範囲だけドラッグできるようになります。
実際のサンプルは以下のようになります(サンプル01を実行する)。
【サンプル01】
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>Sample</title>
<link rel="stylesheet" href="main.css" type="text/css" media="all">
<script type="text/javascript" src="http://yui.yahooapis.com/2.4.1/build/yahoo-dom-event/yahoo-dom-event.js"></script>
<script type="text/javascript" src="http://yui.yahooapis.com/2.4.1/build/dragdrop/dragdrop-min.js"></script>
<script type="text/javascript"><!--
YAHOO.util.Event.addListener(window, "load", function(){
var ddObj = new YAHOO.util.DD("contents1");
ddObj.setXConstraint(0, 300);
});
// --></script>
</head>
<body>
<h1>横方向のドラッグ範囲を制限します</h1>
<div id="contents1">ここが横幅0〜300ピクセルの範囲でドラッグできます</div>
</body>
</html>

移動範囲の制限だけでなく、一回に移動する量も指定することができます。一回の移動量はsetXConstraint()の3番目のパラメータとして指定します。値はピクセルなのでsetXConstraint(0,300,10)とするとX座標0〜300の範囲で10ピクセル単位でドラッグできるようになります。
実際のサンプルは以下のようになります。(サンプル02を実行する

【サンプル02】
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>Sample</title>
<link rel="stylesheet" href="main.css" type="text/css" media="all">
<script type="text/javascript" src="http://yui.yahooapis.com/2.4.1/build/yahoo-dom-event/yahoo-dom-event.js"></script>
<script type="text/javascript" src="http://yui.yahooapis.com/2.4.1/build/dragdrop/dragdrop-min.js"></script>
<script type="text/javascript"><!--
YAHOO.util.Event.addListener(window, "load", function(){
var ddObj = new YAHOO.util.DD("contents1");
ddObj.setXConstraint(0, 600, 50);
});
// --></script>
</head>
<body>
<h1>横方向のドラッグ範囲を制限します</h1>
<div id="contents1">ここが横幅0〜600ピクセルの範囲で50ピクセル単位でドラッグできます</div>
</body>
</html>

横方向だけでなく縦方向の移動制限を指定するにはsetYConstraint()を使います。パラメータはsetXConstraint()と同じです。横方向と縦方向の両方の移動制限を行なう場合にはsetXConstraint()、setYConstraint()を使って指定します。
実際のサンプルは以下のようになります。(サンプル03を実行する

【サンプル03】
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>Sample</title>
<link rel="stylesheet" href="main.css" type="text/css" media="all">
<script type="text/javascript" src="http://yui.yahooapis.com/2.4.1/build/yahoo-dom-event/yahoo-dom-event.js"></script>
<script type="text/javascript" src="http://yui.yahooapis.com/2.4.1/build/dragdrop/dragdrop-min.js"></script>
<script type="text/javascript"><!--
YAHOO.util.Event.addListener(window, "load", function(){
var ddObj = new YAHOO.util.DD("contents1");
ddObj.setXConstraint(0, 600, 50);
ddObj.setYConstraint(0, 300, 50);

});
// --></script>
</head>
<body>
<h1>縦横方向のドラッグ範囲を制限します</h1>
<div id="contents1">制限付きでドラッグできます</div>
</body>
</html>

[目次へ]