Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/02/2012, 18:29
Avatar de Naahuel
Naahuel
 
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 1 mes
Puntos: 192
Respuesta: Flor con Drag and Drop

Me dio algo de curiosidad así que te paso lo que hice en unos 10 minutos :P
http://nahueljose.com.ar/ejemplos/flor-drag-and-drop/

Es súper básico, por supuesto. Utilizo jQuery + jQueryUI.

Revisá la documentación sobre .draggable() y .droppable().

Acá el código con un poco de comentarios. El comportamiento es súper básico pero las herramientas dan para hacer algo mucho mucho mejor. El código no es súper óptimo tampoco pero lo hice más o menos para que no sea tan específico a la flor, sino a una grilla de elementos arrastrables que sólo entran en sus respectivos cuadritos.

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />
  3. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
  4. <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
  5. <title>Flor Drag &amp; Drop</title>
  6.  
  7.     $(function(){
  8.         //elementos arrastrables
  9.         $('.arrastrable').draggable({ revert: "invalid" }); //hacer los elementos arrastrables y que vuelvan si no
  10.                                                             //se los coloca en el cuadro correcto
  11.         //objetivos
  12.         $('#lienzo div').each(function(){
  13.             var aceptar = $(this).data('aceptar');          //ver que clase acepta cada obetivo
  14.             if(aceptar){
  15.                 $(this).droppable({
  16.                     accept : '.' + aceptar,
  17.                     drop: function( event, ui ) {
  18.                     $( this )
  19.                         .addClass( "ui-state-highlight" );  //resaltar si se ha colocado en el correcto
  20.                     }
  21.                 })
  22.             }
  23.         });
  24.     });
  25.  
  26. <!-- .arrastrable{
  27.     cursor:move;
  28.     float:left;
  29. }
  30. #imagenes{
  31.     float:right;
  32.     width:500px;
  33. }
  34. #lienzo{
  35.     float:left;
  36.     width:636px;
  37.     height:636px;
  38.     background:#EEE;
  39.     border:1px solid #CCC;
  40. }
  41. #lienzo div{
  42.     width:210px;
  43.     height:210px;
  44.     float:left;
  45.     border:1px solid #CCC;
  46. } -->
  47.  
  48. </head>
  49.     <!-- imagenes -->
  50.     <div id="imagenes">
  51.         <img class="arrastrable centro" src="images/centro.png" />
  52.         <img class="arrastrable derecha" src="images/petalo-der.png" />
  53.         <img class="arrastrable inferior" src="images/petalo-inferior.png" />
  54.         <img class="arrastrable izquierda" src="images/petalo-izq.png" />
  55.         <img class="arrastrable superior" src="images/petalo-superior.png" />
  56.     </div>
  57.    
  58.     <!-- lienzo -->
  59.     <div id="lienzo">
  60.         <div></div>
  61.         <div data-aceptar="superior"></div>
  62.         <div></div>
  63.         <div data-aceptar="izquierda"></div>
  64.         <div data-aceptar="centro"></div>
  65.         <div data-aceptar="derecha"></div>
  66.         <div></div>
  67.         <div data-aceptar="inferior"></div>
  68.         <div></div>
  69.     </div>
  70. </body>
  71. </html>
__________________
nahueljose.com.ar