CÓDIGO HTML NECESARIO:
Código HTML:
<!DOCTYPE html> <html lang="es"> <head> <title>Arrastrar y Soltar - HTML5</title> <meta charset="utf-8" /> <link rel="stylesheet" href="style.css" /> <script type="text/javascript"> function empezar(e) { e.dataTransfer.effectAlloweb = 'move'; e.dataTransfer.setData("Data", e.target.getAttribute('id')); e.dataTransfer.setDragImage(e.target, 0, 0); return true; } function enter(e) { return true; } function over(e) { var esarrastrable = e.dataTransfer.getData("Data"); var id = e.target.getAttribute('id'); if (id == 'caja_principal') return false; if (id == 'caja_objetos' && esarrastrable == 'objeto1') return false; else return true; } function drop(e) { var esarrastrable = e.dataTransfer.getData("Data"); e.target.appendChild(document.getElementById(esarrastrable)); e.stopPropagation(); return false; } function end(e) { e.dataTransfer.clearData("Data"); return true } </script> </head> <body> <div id="caja_principal" ondragenter="return enter(event)" ondragover="return over(event)" ondrop="return drop(event)"> <div id="objeto1" draggable="true" ondragstart="return empezar(event)" ondragend="return end(event)"> Primer Objeto. </div> <div id="objeto2" draggable="true" ondragstart="return empezar(event)" ondragend="return end(event)"> Segundo Objeto. </div> </div> <div id="caja_objetos" ondragenter="return enter(event)" ondragover="return over(event)" ondrop="return drop(event)"> </div> </body> </html>
Código HTML:
#caja_principal, #caja_objetos { float:left; width:250px; height:300px; padding:10px; margin:10px; } #caja_principal{ background:#CCCCCC; } #caja_objetos{ background:#666666; } #objeto1, #objeto2{ text-align:center; width:75px; height:50px; padding:10px; margin:10px; } #objeto1{ background:#0099FF; } #objeto2{ background:#0066FF; }
Paso a explicar cada "pedasito" del código jejee
Código HTML:
<div id="caja_principal" ondragenter="return enter(event)" ondragover="return over(event)" ondrop="return drop(event)"> <div id="objeto1" draggable="true" ondragstart="return empezar(event)" ondragend="return end(event)"> Primer Objeto. </div> <div id="objeto2" draggable="true" ondragstart="return empezar(event)" ondragend="return end(event)"> Segundo Objeto. </div> </div>
Código HTML:
<div id="caja_principal" ondragenter="return enter(event)" ondragover="return over(event)" ondrop="return drop(event)"></div>
1. draggable="true" ----> es lo que hace que un objeto sea capas de arrastrase.
2. ondragstart="return empezar(event)" ----> ondragstart define el momento cuando la persona intenta arrastrar el objeto.
3. ondragend="return end(event)" ----> define que va a pasar cuando se suelte el objeto.
Código HTML:
<div id="objeto1" draggable="true" ondragstart="return empezar(event)" ondragend="return end(event)"></div>
1. draggable="true" ----> es lo que hace que un objeto sea capas de arrastrase.
2. ondragstart="return empezar(event)" ----> ondragstart define el momento cuando la persona intenta arrastrar el objeto.
3. ondragend="return end(event)" ----> define que va a pasar cuando se suelte el objeto.
Una ves que definamos esto debemos configurar los eventos con javascript!
Código HTML:
<script type="text/javascript"> function empezar(e) { e.dataTransfer.effectAlloweb = 'move'; e.dataTransfer.setData("Data", e.target.getAttribute('id')); e.dataTransfer.setDragImage(e.target, 0, 0); return true; } function enter(e) { return true; } function over(e) { var esarrastrable = e.dataTransfer.getData("Data"); var id = e.target.getAttribute('id'); if (id == 'caja_principal') return false; if (id == 'caja_objetos' && esarrastrable == 'objeto1') return false; else return true; } function drop(e) { var esarrastrable = e.dataTransfer.getData("Data"); e.target.appendChild(document.getElementById(esarrastrable)); e.stopPropagation(); return false; } function end(e) { e.dataTransfer.clearData("Data"); return true } </script>
Al definir la función "empezar" le decimos al navegador como debe usar correctamente el div cuando arrastremos.
Al definir la función "enter" queremos definir que los objetos arrastrables puedan situarse en los div contenedor.
Al definir la función "over" esta función recupera el objeto arrastrable y la div contenedora y verifica si puede alojarla o no.
Al definir la función "drop" recupera los datos del objeto arrastrado y utiliza la función pre-construida appendChild() para verificar y agregar el contenido, También se define si debe o no continuar el evento.
Al definir la función "end" usamos esta función para limpiar los datos del objeto arrastrado y darle la opción de seguir con otros.
Bueno con esto terminamos puedes tocar todo el código para ir probando y buscándole la utilidad
Muchas gracias a todos y espero que les sirva Saludos!