JavaScript DHTML/Ajax Layer/Drag Constrain

Материал из Web эксперт
Перейти к: навигация, поиск

Drag and drop: constrain to parent element

   <source lang="html4strict">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head>

 <title>script.aculo.us Drag and drop functional test file</title>
 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
 <script src="./scriptaculous-js-1.6.4src/prototype.js" type="text/javascript"></script>
 <script src="./scriptaculous-js-1.6.4src/scriptaculous.js" type="text/javascript"></script>
 <script src="./scriptaculous-js-1.6.4src/unittest.js" type="text/javascript"></script>
 <style type="text/css" media="screen">
   div.box { background: green; width:100px; height:100px }
   div.box-container { background: yellow; width:200px; height:200px }
 </style>

</head> <body>

script.aculo.us Drag and drop functional test file

Draggables/Droppables

 Normal box
 snap: 25
 snap: [5,25]
 snap: procedural (e.g. constrain to box)
   snap: procedural (e.g. constrain to parent element)

<script type="text/javascript" language="javascript" charset="utf-8">

 new Draggable("box-normal",{snap:false,revert:true});
 new Draggable("box-grid-numeric",{snap:25,revert:true});
 new Draggable("box-grid-array",{snap:[5,25],revert:true});
 new Draggable("box-grid-procedural",{
   snap: function(x,y) {
     return[
       x<100 ? (x > 0 ? x : 0 ) : 100,
       y<50 ? (y > 0 ? y : 0) : 50];
   },
   revert:true
 });
 new Draggable("box-grid-procedural-gets-draggable",{
   snap: function(x,y,draggable) {
     function constrain(n, lower, upper) {
       if (n > upper) return upper;
       else if (n < lower) return lower;
       else return n;
     }
    
     element_dimensions = Element.getDimensions(draggable.element);
     parent_dimensions = Element.getDimensions(draggable.element.parentNode);
     return[
       constrain(x, 0, parent_dimensions.width - element_dimensions.width),
       constrain(y, 0, parent_dimensions.height - element_dimensions.height)];
   },
   revert:true
 });

</script>

</body> </html>

      </source>
   
  

<A href="http://www.wbex.ru/Code/JavaScriptDownload/scriptaculous-js-1.6.4.zip">scriptaculous-js-1.6.4.zip( 139 k)</a>


Drag and drop: snap 25

   <source lang="html4strict">


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head>

 <title>script.aculo.us Drag and drop functional test file</title>
 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
 <script src="./scriptaculous-js-1.6.4src/prototype.js" type="text/javascript"></script>
 <script src="./scriptaculous-js-1.6.4src/scriptaculous.js" type="text/javascript"></script>
 <script src="./scriptaculous-js-1.6.4src/unittest.js" type="text/javascript"></script>
 <style type="text/css" media="screen">
   div.box { background: green; width:100px; height:100px }
   div.box-container { background: yellow; width:200px; height:200px }
 </style>

</head> <body>

script.aculo.us Drag and drop functional test file

Draggables/Droppables

 Normal box
 snap: 25
 snap: [5,25]
 snap: procedural (e.g. constrain to box)
   snap: procedural (e.g. constrain to parent element)

<script type="text/javascript" language="javascript" charset="utf-8">

 new Draggable("box-normal",{snap:false,revert:true});
 new Draggable("box-grid-numeric",{snap:25,revert:true});
 new Draggable("box-grid-array",{snap:[5,25],revert:true});
 new Draggable("box-grid-procedural",{
   snap: function(x,y) {
     return[
       x<100 ? (x > 0 ? x : 0 ) : 100,
       y<50 ? (y > 0 ? y : 0) : 50];
   },
   revert:true
 });
 new Draggable("box-grid-procedural-gets-draggable",{
   snap: function(x,y,draggable) {
     function constrain(n, lower, upper) {
       if (n > upper) return upper;
       else if (n < lower) return lower;
       else return n;
     }
    
     element_dimensions = Element.getDimensions(draggable.element);
     parent_dimensions = Element.getDimensions(draggable.element.parentNode);
     return[
       constrain(x, 0, parent_dimensions.width - element_dimensions.width),
       constrain(y, 0, parent_dimensions.height - element_dimensions.height)];
   },
   revert:true
 });

</script>

</body> </html>

      </source>
   
  

<A href="http://www.wbex.ru/Code/JavaScriptDownload/scriptaculous-js-1.6.4.zip">scriptaculous-js-1.6.4.zip( 139 k)</a>


Drag and drop: snap to a box

   <source lang="html4strict">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head>

 <title>script.aculo.us Drag and drop functional test file</title>
 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
 <script src="./scriptaculous-js-1.6.4src/prototype.js" type="text/javascript"></script>
 <script src="./scriptaculous-js-1.6.4src/scriptaculous.js" type="text/javascript"></script>
 <script src="./scriptaculous-js-1.6.4src/unittest.js" type="text/javascript"></script>
 <style type="text/css" media="screen">
   div.box { background: green; width:100px; height:100px }
   div.box-container { background: yellow; width:200px; height:200px }
 </style>

</head> <body>

script.aculo.us Drag and drop functional test file

Draggables/Droppables

 Normal box
 snap: 25
 snap: [5,25]
 snap: procedural (e.g. constrain to box)
   snap: procedural (e.g. constrain to parent element)

<script type="text/javascript" language="javascript" charset="utf-8">

 new Draggable("box-normal",{snap:false,revert:true});
 new Draggable("box-grid-numeric",{snap:25,revert:true});
 new Draggable("box-grid-array",{snap:[5,25],revert:true});
 new Draggable("box-grid-procedural",{
   snap: function(x,y) {
     return[
       x<100 ? (x > 0 ? x : 0 ) : 100,
       y<50 ? (y > 0 ? y : 0) : 50];
   },
   revert:true
 });
 new Draggable("box-grid-procedural-gets-draggable",{
   snap: function(x,y,draggable) {
     function constrain(n, lower, upper) {
       if (n > upper) return upper;
       else if (n < lower) return lower;
       else return n;
     }
    
     element_dimensions = Element.getDimensions(draggable.element);
     parent_dimensions = Element.getDimensions(draggable.element.parentNode);
     return[
       constrain(x, 0, parent_dimensions.width - element_dimensions.width),
       constrain(y, 0, parent_dimensions.height - element_dimensions.height)];
   },
   revert:true
 });

</script>

</body> </html>

      </source>
   
  

<A href="http://www.wbex.ru/Code/JavaScriptDownload/scriptaculous-js-1.6.4.zip">scriptaculous-js-1.6.4.zip( 139 k)</a>