Arrastrar y Soltar en HTML5 - Drag And Drop

Anuncio
Arrastrar y Soltar en HTML5 - Drag And Drop - Tutorial
y Ejemplo
En este Articulo Arrastrar y Soltar en HTML5 ( drag and drop) veremos que es y como
funciona esta caracteristica que viene en HTML5, tambien vamos a construir un ejemplo que nos
servira de tutorial para ir practicando lo que vamos viendo. Que es la caracteristica Arrastrar y
Soltar en html5 (drag and drop)?, Drag and drop es una caracteristica que nos permite arrastrar
practicamente cualquier elemento de una pagina, funciona en base a:



Eventos
Javascript
Marcado de elementos
Esta caracterisitica permite la interactividad con el usuario de una manera mas facil, real y
dinamica, asi que comenzemos con esto Arrastrar y Soltar en HTML5...
Requerimientos:

Notepad ++(vale cualquier otro editor de textos)
Desarrollo
Para comprender el funcionamiento y puesta en marcha de la caracteristica drag and drop vamos a
realizar un ejemplo en el cual tendremos 4 imagenes tipo rompecabezas que seran capaces de
arrastrarse y cambiar de posicion entre ellas.

Creacion de contenido Arrastrable
Para hacer que un elemento de una pagina sea capaz de arrastrar y soltar en html5 tenemos que
agregar el atributo draggable y establecerlo a true, cabe decir que la mayoria de los navegadores
tienen la opcion de arrastrar activada por defecto para los elementos de ancla: como
draggable=true
en nuestro ejemplo tendremos 4 divs en los que iran las 4 imagenes que queremos arrastrar asi que
lo que arrastraremos seran los divs

Eventos
La caracteristica Drag and Drop posee algunos eventos para su manipulacion y control de todo el
proceso como son:

dragstart
Se dispara cuando comienza el arrastrado del elemento

drag
Se dispara cada vez que el mouse es movido y se esta arrastrando un objeto

dragenter
Se dispara cuando se esta realizando un arrastrado y se ingresa por primera vez con el mouse a un
elemento objetivo

dragleave
Se dispara cuando se esta realizando un arrastrado y deja con el mouse a un elemento objetivo

dragover
Se dispara cuando se esta realizando un arrastrado y se ingresa con el mouse a un elemento objetivo

drop
Se dispara cuando el usuario suelta el boton mientras arrastra un objeto sobre un objeto que puede
recibirlo

dragend
Se dispara cuando el usuario suelta el boton mientras arrastra un objeto
El estilo CSS de la clase columna es la siguiente:
.columna{
width:200px;
height:200px;
float:left;
border: 2px solid #FFFFFF;
-webkit-border-radius: 10px;
-ms-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
cursor:move;
}
.columna.over {
border: 2px solid #FF0000;
}
Aqui cabe decir que el codigo: cursor:move; es para que aparezca sobre el elemento el icono de
mover para darle a enternder al usuario que es un objeto arrastrable.
Ahora el codigo javascript donde se agregan los eventos drag and drop en html5 es el siguiente:
var dragSrcEl = null;
var cols = document.querySelectorAll('#panel .columna');
//guardamos el contenido que queremos cambiar para la transferencia al
dejar de arrastrar
function handleDragStart(e) {
dragSrcEl = this;
e.dataTransfer.effectAllowed = 'move';
e.dataTransfer.setData('text/html', this.innerHTML);
}
function handleDragOver(e) {
if (e.preventDefault) {
e.preventDefault();
}
e.dataTransfer.dropEffect = 'move';
//efecto al mover
return false;
}
function handleDragEnter(e) {
this.classList.add('over');//agregamos borde rojo en el estilo css
}
function handleDragLeave(e) {
this.classList.remove('over'); //eliminamos borde rojo en el estilo css
}
function handleDrop(e) {
if (e.stopPropagation) {
e.stopPropagation(); //evitamos abrir contenido en otra pagina al
soltar
}
//hacemos el intercambio de contenido html de el elemento origne y
destino
if (dragSrcEl != this) {
dragSrcEl.innerHTML = this.innerHTML;
this.innerHTML = e.dataTransfer.getData('text/html');
this.classList.remove('over');
}
return false;
}
function handleDragEnd(e) {
[].forEach.call(cols, function (col) {
col.classList.remove('over');//eliminamos el borde rojo de todas las
columnas
});
}
//agregamos todos los eventos anteriores a cada columna mediante un ciclo
[].forEach.call(cols, function(col) {
col.addEventListener('dragstart', handleDragStart, false);
col.addEventListener('dragenter', handleDragEnter, false);
col.addEventListener('dragover', handleDragOver, false);
col.addEventListener('dragleave', handleDragLeave, false);
col.addEventListener('drop', handleDrop, false);
col.addEventListener('dragend', handleDragEnd, false);
});
Ahora solo queda probar el codigo...
Puedes ver el ejemplo en accion en el siguiente link:
Lab DragAndDrop
¿Quieres tener tu pagina web? Contrata con DigitalServer o HostGator!
( dominio incluido gratis )
----------
Post completo en: http://jonathanmelgoza.com/blog/arrastrar-y-soltar-en-html5-drag-anddrop/#ixzz3CNR3zxB4
Descargar