Tutorial HTML

INICIO HTML Introducción HTML Editores HTML HTML básico Elementos HTML Atributos HTML Encabezados HTML Párrafos HTML Estilos HTML Formato HTML Cotizaciones HTML Comentarios HTML Colores HTML CSS HTML Enlaces HTML Imágenes HTML icono de favoritos HTML Tablas HTML Listas HTML Bloque HTML y en línea Clases HTML Identificación HTML Marcos flotantes HTML HTML JavaScript Rutas de archivo HTML Encabezado HTML Diseño HTML Responsivo HTML Código informático HTML Semántica HTML Guía de estilo HTML Entidades HTML Símbolos HTML Emoticonos HTML Juego de caracteres HTML Codificación de URL HTML HTML frente a XHTML

Formularios HTML

Formularios HTML Atributos de formulario HTML Elementos de formulario HTML Tipos de entrada HTML Atributos de entrada HTML Atributos de formulario de entrada HTML

Gráficos HTML

Lienzo HTML HTML SVG

Medios HTML

Medios HTML Vídeo HTML Audio HTML Complementos HTML HTML de YouTube

API de HTML

Geolocalización HTML Arrastrar/soltar HTML Almacenamiento web HTML Trabajadores web HTML SSE HTML

Ejemplos HTML

Ejemplos HTML Cuestionario HTML Ejercicios HTML Certificado HTML Resumen HTML Accesibilidad HTML

Referencias HTML

Lista de etiquetas HTML Atributos HTML Atributos globales HTML Compatibilidad con navegador HTML Eventos HTML Colores HTML Lienzo HTML Audio/vídeo HTML Tipos de documentos HTML Conjuntos de caracteres HTML Codificación de URL HTML Códigos de idioma HTML Mensajes HTTP Métodos HTTP Convertidor PX a EM Atajos de teclado

API de arrastrar y soltar HTML


En HTML, cualquier elemento se puede arrastrar y soltar.


Ejemplo

W3Escuelas

Arrastre la imagen de W3Schools al rectángulo.


Arrastrar y soltar

Arrastrar y soltar es una característica muy común. Es cuando "agarras" un objeto y lo arrastras a una ubicación diferente.


Compatibilidad con navegador

Los números de la tabla especifican la primera versión del navegador que es totalmente compatible con Arrastrar y soltar.

API
Drag and Drop 4.0 9.0 3.5 6.0 12.0

Ejemplo HTML de arrastrar y soltar

El siguiente ejemplo es un ejemplo simple de arrastrar y soltar:

Ejemplo

<!DOCTYPE HTML>
<html>
<head>
<script>
function allowDrop(ev) {
  ev.preventDefault();
}

function drag(ev) {
  ev.dataTransfer.setData("text", ev.target.id);
}

function drop(ev) {
  ev.preventDefault();
  var data = ev.dataTransfer.getData("text");
  ev.target.appendChild(document.getElementById(data));
}
</script>
</head>
<body>

<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>

<img id="drag1" src="img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69">

</body>
</html>

Puede parecer complicado, pero repasemos todas las diferentes partes de un evento de arrastrar y soltar.



Hacer que un elemento se pueda arrastrar

En primer lugar: para hacer que un elemento se pueda arrastrar, establezca el draggableatributo en verdadero:

<img draggable="true">

Qué arrastrar: ondragstart y setData()

Luego, especifique lo que debe suceder cuando se arrastra el elemento.

En el ejemplo anterior, el ondragstartatributo llama a una función, arrastrar (evento), que especifica qué datos se arrastrarán.

El dataTransfer.setData()método establece el tipo de datos y el valor de los datos arrastrados:

function drag(ev) {
  ev.dataTransfer.setData("text", ev.target.id);
}

En este caso, el tipo de datos es "texto" y el valor es el id del elemento arrastrable ("drag1").


Dónde caer - ondragover

El ondragoverevento especifica dónde se pueden soltar los datos arrastrados.

De forma predeterminada, los datos/elementos no se pueden colocar en otros elementos. Para permitir una caída, debemos evitar el manejo predeterminado del elemento.

Esto se hace llamando al event.preventDefault()método para el evento ondragover:

event.preventDefault()

Hacer la gota - ondrop

Cuando se sueltan los datos arrastrados, se produce un evento de soltar.

En el ejemplo anterior, el atributo ondrop llama a una función, drop(event):

function drop(ev) {
  ev.preventDefault();
  var data = ev.dataTransfer.getData("text");
  ev.target.appendChild(document.getElementById(data));
}

Código explicado:

  • Llame a preventDefault() para evitar que el navegador maneje los datos de manera predeterminada (el valor predeterminado es abrir como enlace al soltar)
  • Obtenga los datos arrastrados con el método dataTransfer.getData(). Este método devolverá cualquier dato que se haya establecido en el mismo tipo en el método setData()
  • Los datos arrastrados son la identificación del elemento arrastrado ("drag1")
  • Agregue el elemento arrastrado al elemento soltado

Más ejemplos

Ejemplo

Cómo arrastrar (y soltar) una imagen de un lado a otro entre dos elementos <div>: