jQuery UI の Draggable プラグインを使った、ドラッグして移動できるボックス。特定の要素にスナップ(吸着)させたいときは、snap オプションを使う。同時に、snapMode オプションを使うと、内側だけにスナップ、外側だけにスナップ、内外両方にスナップを、指定できる。
実装例(サンプル)
実装例の動作について
「ドラッグして移動できるボックス。」と書いてあるボックスを、ドラッグして、移動させることができる。「このボックスの枠の内側だけにスナップする。」と書いてあるボックスの内側で、破線で示した枠に近付くと、スナップ(吸着)する。
実装例のソースコード
読み込み
読み込み方は、2種類ある。パスは、それぞれ、アップロードした場所を指定する。
まとめて読み込む場合
<link rel="stylesheet" href="themes/base/jquery.ui.all.css">
<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script type="text/javascript" src="ui/jquery-ui-1.8.12.custom.min.js"></script>
<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script type="text/javascript" src="ui/jquery-ui-1.8.12.custom.min.js"></script>
個別に読み込む場合
<link rel="stylesheet" href="themes/base/jquery.ui.all.css">
<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script type="text/javascript" src="ui/jquery.ui.core.js"></script>
<script type="text/javascript" src="ui/jquery.ui.widget.js"></script>
<script type="text/javascript" src="ui/jquery.ui.mouse.js"></script>
<script type="text/javascript" src="ui/jquery.ui.draggable.js"></script>
<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script type="text/javascript" src="ui/jquery.ui.core.js"></script>
<script type="text/javascript" src="ui/jquery.ui.widget.js"></script>
<script type="text/javascript" src="ui/jquery.ui.mouse.js"></script>
<script type="text/javascript" src="ui/jquery.ui.draggable.js"></script>
JavaScript
<script>
<!--
jQuery( function() {
jQuery( '#jquery-ui-draggable' ) . draggable( {
snap: '#jquery-ui-draggable-snap',
snapMode: 'inner',
} );
} );
// -->
</script>
<!--
jQuery( function() {
jQuery( '#jquery-ui-draggable' ) . draggable( {
snap: '#jquery-ui-draggable-snap',
snapMode: 'inner',
} );
} );
// -->
</script>
snap オプションと併用する必要がある。
snap オプションが false の場合、snapMode オプションは、機能しない。
snapMode オプションに指定できるのは、下の3つ。
- inner
-
内側だけにスナップ。
- outer
-
外側だけにスナップ。
- both
-
両方にスナップ。
CSS
<style>
<!--
#jquery-ui-draggable-snap {
width: 500px;
height: 200px;
padding: 0;
margin: 0;
border-style: dashed;
border-radius: 10px;
text-align: center;
}
#jquery-ui-draggable {
width: 100px;
height: 100px;
padding: 30px;
margin: 0;
border-radius: 10px;
}
-->
</style>
<!--
#jquery-ui-draggable-snap {
width: 500px;
height: 200px;
padding: 0;
margin: 0;
border-style: dashed;
border-radius: 10px;
text-align: center;
}
#jquery-ui-draggable {
width: 100px;
height: 100px;
padding: 30px;
margin: 0;
border-radius: 10px;
}
-->
</style>
HTML
<div id="jquery-ui-draggable-snap" class="ui-widget-content">
<p>このボックスの枠の内側だけにスナップする。</p>
</div>
<div id="jquery-ui-draggable" class="ui-widget-content">
<p>ドラッグして<br />移動できる<br />ボックス。</p>
</div>
<p>このボックスの枠の内側だけにスナップする。</p>
</div>
<div id="jquery-ui-draggable" class="ui-widget-content">
<p>ドラッグして<br />移動できる<br />ボックス。</p>
</div>