Arrastre y cae es una característica común, es decir, arrastre a otra posición después del objeto de captura.
En HTML5, Drag and Drop es una parte estándar, y cualquier elemento se puede arrastrar y soltar.
Primero haga clic en un pequeño ejemplo: Ejecutar JavaScript cuando el usuario comience a arrastrar <p> elementos
<p draggable = true OndragStart = myFunction (evento)> ¡Dárreme!
Consejo: los enlaces e imágenes se arrastran de forma predeterminada y no necesitan propiedades arrastrables.
Definición y usoLos siguientes eventos se activarán durante el proceso de arrastrar y soltar:
Internet Explorer 9+, Firefox, Opera, Chrome y Safari admiten arrastre.
Nota: Safari 5.1.2 no es compatible con el arrastre;
InstanciaPublique primero el código y luego explique uno por uno:
<! Borde: 1px sólido #aaaaaaa;} </style> </head> <body> <p> arrastre img_w3slogo.gif imagen a la caja rectangular: </p> <div ID = div1 ondrop = drop (event) ondragover = iShdrop (Incluso t)> </div> <br> <img id = drag1 src = images/img_w3slogo. Ev.preventDefalt ();} función drag (ev) {ev.datatransfer.setData (text, ev.target.id);} function drop (ev) {ev.preventDefault (); ; EV .Target.AppendChild (documen.getElementById (data));} </script> </body> </html>
El efecto de la página antes de arrastrar es:
Analicemos el significado del siguiente código a continuación.
Establecer el elemento se puede arrastrar y soltarEn primer lugar, para que el elemento sea arrastrado, configure la propiedad arrastrable en verdadera:
<Img draggable = true>Qué arrastrar-condragStart y setData ()
Luego se especifica lo que sucede cuando se arrastra el elemento.
En el ejemplo anterior, la propiedad OndragStart llama a una función, arrastre (evento), que especifica los datos arrastrados.
Método dataTransfer.setData () Establezca el tipo de datos y el valor de los datos de arrastre de datos:
Función drag (ev) {ev.datatransfer.setData (text, ev.target.id);}
En este ejemplo, el tipo de datos es texto, y el valor es ID (Drag1) que puede arrastrar el elemento.
Donde poner it-antagoverEl evento Ondragover estipula dónde colocar los datos arrastrados.
Predeterminado, los datos/elementos no se pueden colocar en otros elementos. Si necesita establecer la ubicación permitida, debemos evitar el procesamiento predeterminado de elementos.
Esto es para llamar al evento.
event.preventDefault ()Put-Androp
Cuando se colocan los datos de arrastre, se produce el evento de caída.
En el ejemplo anterior, el atributo ONDROP llama a una función, Drop (evento):
Function drop (ev) {ev.preventDefault ();
Explicación del código:
Los resultados de la implementación son los que se muestran en la figura:
Objeto dataTransferDurante la operación de arrastre, podemos usar el objeto DataTransfer para transmitir los datos para realizar otras operaciones en los datos cuando termine la operación de arrastre.
Atributo de objeto:Function dragStart_handler (ev) {console.log (dragStart); // Agregar la ID del elemento de destino al objeto de transferencia de datos ev.datatransfer.setData (text/sencillo, ev.targ et.id);} <body> <p id = p1 draggable = True OndragStart = DragStart_Handler (Event);> Este elemento es dibujable.Definir los datos del arrastre
Function dragStart_handler (ev) {// Agregar los datos de arrastre ev.datatransfer.setData (text/sencillo, ev.target.id); ;Defina la imagen de arrastre
Función dragStart_handler (EV) {// Crear una imagen y luego usarla para la imagen de arrastre. ();Definir el efecto de arrastre
Función dragStart_handler (ev) {// Establezca el efecto de arrastre para copiar ev.datatransfer.dropeffect = copy;}Definir una zona de caída
Function dragover_handler (ev) {ev.preventDefault (); Elemento a los datos domine del objetivo = ev.datatransfer.getData (text); Div> </body>Problema de arrastre del navegador Firefox
Pero vaya aquí y encuentre un problema en el navegador Firefox:
El arrastre de HTML5 utiliza PreventDefault para evitar que aparezca la página pop -Up, pero ¿no funciona con Firefox?
Solución:
document.body.ondrop = function (event) {event.preventDefault ();
O para el ejemplo anterior, también es posible agregar al método ONDROP:
Function drop (ev) {ev.preventDefault ();
Lo anterior es todo el contenido de este artículo.