El día de hoy quiero mostrar como realizar un Drag and Drop utilizando mootools, el ejemplo será sencillo pero se muestran los eventos necesarios para realizar algo más complejo. El ejemplo siguiente muestra lo que se planea realizar, arrastra la carpeta de la izquierda sobre cualquiera de los botes azules.
Hacer esto es muy sencillo, antes que nada hay que descargar la ultima versión de mootools (mootools-release-1.11.js actualmente), luego de esto la importamos al documento así:
El siguiente paso es crear el objeto que se arrastrara y los botecitos donde se soltará la carpeta, el HTML quedará de la siguiente manera.
Ahora mediante CSS acomodamos al tamaño correcto y le ponemos las imágenes respectivas.
Una vez lista la interfase, viene lo divertido, pues es hora de programar las acciones y eventos a realizar.
Mootools tiene una forma muy sencilla de realizar el Drag and Drop, simplemente al elemento que se hace “dragable” se le asignan los elementos que serán “dropables” para este elemento mediante un arreglo.
Con esto en mente tomamos todos los elementos que contengan la clase “drop”, para esto simplemente utilizamos la función doble dólar y le pasamos la expresión que necesitamos.
Hasta aquí contamos con un arreglo de elementos, además de que se ha creado una variable llamada clon, la cual no contiene nada por ahora, esta variable clon lo que contendrá es una copia del elemento mover y se le modificará su propiedad de la transparencia, todo esto se realizará cuando se le presiona el Mouse sobre el elemento mover.
El pseudo código es el siguiente:
Esto en javascript se escribe de la siguiente manera:
Lo único importante para comentar, es prestar atención a la función makeDraggable, pues esta es la responsable de que los elementos se puedan arrastrar en el documento, además, dentro de las opciones que se le pasan esta la de droppables, la cual es el arreglo de elementos en los que puede ser soltado el elemento que estamos arrastrando.
Lo que sigue es programar los eventos para los elementos dropables, los cuales son tres, el over, que se ejecuta cuando el elemento que se esta arrastrando esta sobre el elemento en cuestión, el leave, que se ejecuta cada vez que el elemento que se esta arrastrando sale del elemento en cuestión, y el mas importante, el drop se ejecuta cuando el elemento que se esta arrastrando es soltado sobre el elemento en cuestión.
Con esto en mente codificamos lo siguiente
Primero se ponen con opacidad en 70%, luego se itera el arreglo y a cada elemento se le asigna los eventos de los que he hablado anteriormente (drop, over, leave), en los eventos leave y over, únicamente se cambia la opacidad mediante una transición, esto es gracias a la clase Fx.Styles, y en el evento drop se verifica que exista una instancia del clon, de ser así se elimina, luego se cambia la imagen del bote vacío por el bote lleno.
Pues esto es todo, realmente sencillo, espero que todo este claro, a continuación pongo el código completo del ejemplo, simplemente copia y pega.
Muy buen efecto.
Gracias por el ejemplo , lo estaba buscando ![]()
Tas pesado!!!!, cuando sea grande quiero ser como tu,
Saludos.
Copiar y pegar del código facilitado no funciona.
Para que funcione correctamente asegurate de tener en el mismo directorio la libreria de mootools, ademas de tener las imagenes necesarias.
Saludos.
buenisimo! hacia mucho q estaba buscando una explicacion clara de como funcionaba drag&drop porq necesito programar una aplicacion q “maneje y diferecie varios drops y drags”…Felicitaciones muy buen articulo.
Gracias esta muy bueno el script lo necesitaba!!!!!!!!
Me esta sirviendo de base para realizar una evaluacion interactiva en la cual arrastras la respuesta hacia un contenedor.