Arrastar e Soltar HTML5
- Página Anterior Geolocalização HTML5
- Próxima Página Armazenamento Web HTML5

Arraste a imagem do CodeW3C.com para dentro do retângulo.
Arrastar e soltar
Arrastar e soltar (Drag e Drop) é uma característica muito comum. Ela se refere a puxar algo e soltá-lo em uma posição diferente.
Arrastar e soltar é parte integrante do padrão HTML5: qualquer elemento é arrastável.
Suporte do navegador
Os números na tabela indicam a versão do navegador que suporta completamente o arrastar e soltar.
API | |||||
Arrastar e soltar | 4.0 | 9.0 | 3.5 | 6.0 | 12.0 |
Exemplo de arrastar e soltar em HTML
A seguir está um exemplo simples sobre arrastar e soltar:
Exemplo
<!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>
Talvez pareça um pouco complexo, mas vamos estudar todas as diferentes partes do evento de arrastar e soltar.
Tornar o elemento arrastável
Primeiro: para tornar um elemento arrastável, defina a propriedade draggable como true:
<img draggable="true">
Conteúdo de arrastar e soltar - ondragstart e setData()
Em seguida, determina o que acontece quando o elemento é arrastado.
No exemplo acima, a propriedade ondragstart chama uma função drag(event), definindo que dados devem ser arrastados.
O método setData() do dataTransfer define o tipo de dados e o valor dos dados arrastáveis:
function drag(ev) { ev.dataTransfer.setData("text", ev.target.id); }
Neste exemplo, o tipo de dados é "text" e o valor é o id do elemento arrastável ("drag1").
Para onde arrastar - ondragover
O evento ondragover determina onde os dados arrastados podem ser colocados.
Por padrão, os dados/elementos não podem ser colocados em outros elementos. Para implementar arrastar e soltar, devemos evitar esse modo de processamento padrão do elemento.
Esta tarefa é concluída pelo método preventDefault() do evento ondragover:
event.preventDefault()
Realizar a Colocação - ondrop
Ocorre o evento drop quando soltamos os dados arrastados.
No exemplo acima, a propriedade ondrop chama uma função, drop(event):
function drop(ev) { ev.preventDefault(); var data = ev.dataTransfer.getData("text"); ev.target.appendChild(document.getElementById(data)); }
Explicação do Código:
- Chame preventDefault() para evitar o modo de processamento padrão do navegador dos dados (o comportamento padrão do evento drop é abrir como link)
- Obtenha os dados arrastados usando o método getData() do dataTransfer. Este método retornará qualquer tipo de dados configurado no método setData()
- Os dados arrastados são o id do elemento arrastado ("drag1")
- Adicionar o elemento arrastado ao elemento de destino
Mais Exemplos
Arrastar e Soltar Imagens
Como arrastar e soltar imagens entre dois elementos <div>:
Arraste a imagem do CodeW3C.com para dentro do retângulo.
- Página Anterior Geolocalização HTML5
- Próxima Página Armazenamento Web HTML5