Drag & Drop: Drag Constrained to a Region
+ +This example shows how to constrain a draggable Node to another Nodes region.
+Setting up the Node
+First we need to create the HTML structure used in this example.
+
<div id="dd-demo-canvas1"> <div id="dd-demo-canvas2"> <div id="dd-demo-canvas3"> <div id="dd-demo-1" class="dd-demo"><div>1</div></div> <div id="dd-demo-2" class="dd-demo"><div>2</div></div> <div id="dd-demo-3" class="dd-demo"><div>3</div></div> </div> </div> </div>
<div id="dd-demo-canvas1"> + <div id="dd-demo-canvas2"> + <div id="dd-demo-canvas3"> + <div id="dd-demo-1" class="dd-demo"><div>1</div></div> + <div id="dd-demo-2" class="dd-demo"><div>2</div></div> + <div id="dd-demo-3" class="dd-demo"><div>3</div></div> + </div> + </div> +</div>
Now we give the Nodes some CSS to make them visible.
+
.dd-demo { position: relative; text-align: center; color: #fff; cursor: move; height: 60px; width: 60px; padding: 0; margin: 0; } .dd-demo div { border: 1px solid black; height: 58px; width: 58px; } #dd-demo-canvas1 { padding: 55px; background-color: #004C6D; border: 1px solid black; } #dd-demo-canvas2 { padding: 25px; background-color: #CDCDCD; border: 1px solid black; } #dd-demo-canvas3 { padding: 15px; background-color: #8DD5E7; border: 1px solid black; } #dd-demo-1 { background-color: #8DD5E7; top:5px; left:5px; color: #000; } #dd-demo-2 { background-color: #CDCDCD; top:50px; left:100px; color: #000; } #dd-demo-3 { background-color: #004C6D; top:-100px; left:200px; }
.dd-demo { + position: relative; + text-align: center; + color: #fff; + cursor: move; + height: 60px; + width: 60px; + padding: 0; + margin: 0; +} + +.dd-demo div { + border: 1px solid black; + height: 58px; + width: 58px; +} + +#dd-demo-canvas1 { + padding: 55px; + background-color: #004C6D; + border: 1px solid black; +} +#dd-demo-canvas2 { + padding: 25px; + background-color: #CDCDCD; + border: 1px solid black; +} +#dd-demo-canvas3 { + padding: 15px; + background-color: #8DD5E7; + border: 1px solid black; +} + +#dd-demo-1 { + background-color: #8DD5E7; + top:5px; + left:5px; + color: #000; +} + +#dd-demo-2 { + background-color: #CDCDCD; + top:50px; + left:100px; + color: #000; +} + +#dd-demo-3 { + background-color: #004C6D; + top:-100px; + left:200px; +}
Setting up the YUI Instance
+Now we need to create our YUI instance and tell it to load the dd-constrain module (that will load the dd-ddm and dd-drag modules too).
YUI().use('dd-constrain');
YUI().use('dd-constrain');
Making the Nodes draggable
+Now that we have a YUI instance with the dd-constrain module, we need to instantiate the Drag instance on the Nodes.
YUI().use('dd-constrain', function(Y) { var dd1 = new Y.DD.Drag({ node: '#dd-demo-1' }); var dd2 = new Y.DD.Drag({ node: '#dd-demo-2' }); var dd3 = new Y.DD.Drag({ node: '#dd-demo-3' }); });
YUI().use('dd-constrain', function(Y) { + var dd1 = new Y.DD.Drag({ + node: '#dd-demo-1' + }); + + var dd2 = new Y.DD.Drag({ + node: '#dd-demo-2' + }); + + var dd3 = new Y.DD.Drag({ + node: '#dd-demo-3' + }); +});
Constrain the Nodes to other Nodes
+Now that we have the Nodes draggable, we need to constrain them. We can do this by plugging the DDConstrained on to the Drag instance and passing it a config option called constrain2node and giving it a selector string of the Node we want to constrain to.
YUI().use('dd-constrain', function(Y) { var dd1 = new Y.DD.Drag({ node: '#dd-demo-1' }).plug(Y.Plugin.DDConstrained, { constrain2node: '#dd-demo-canvas3' }); var dd2 = new Y.DD.Drag({ node: '#dd-demo-2' }).plug(Y.Plugin.DDConstrained, { constrain2node: '#dd-demo-canvas2' }); var dd3 = new Y.DD.Drag({ node: '#dd-demo-3' }).plug(Y.Plugin.DDConstrained, { constrain2node: '#dd-demo-canvas1' }); });
YUI().use('dd-constrain', function(Y) { + var dd1 = new Y.DD.Drag({ + node: '#dd-demo-1' + }).plug(Y.Plugin.DDConstrained, { + constrain2node: '#dd-demo-canvas3' + }); + + var dd2 = new Y.DD.Drag({ + node: '#dd-demo-2' + }).plug(Y.Plugin.DDConstrained, { + constrain2node: '#dd-demo-canvas2' + }); + + var dd3 = new Y.DD.Drag({ + node: '#dd-demo-3' + }).plug(Y.Plugin.DDConstrained, { + constrain2node: '#dd-demo-canvas1' + }); +});

