HTML5 드래그 앤 드롭
- 이전 페이지 HTML5 지리 위치
- 다음 페이지 HTML5 웹 스토리지

CodeW3C.com 이미지를 직사각형에 끌어 들이세요.
터치/놓기
터치/놓기(Drag and Drop)는 매우 일반적인 기능입니다. 이는 물건을 잡고 다른 위치로 끌어 넣는 것을 의미합니다.
터치/놓기는 HTML5 표준의 일부입니다: 모든 요소는 터치 가능합니다.
浏览器支持
표中的数字表示支持拖放的首个浏览器版本。
API | |||||
터치/놓기 | 4.0 | 9.0 | 3.5 | 6.0 | 12.0 |
HTML 터치/놓기 예제
다음은 터치/놓기에 대한 간단한 예제입니다:
예제
<!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>
이게 조금 복잡하게 보일 수 있지만, 터치/놓기 이벤트의 모든 다른 부분을 연구해 보겠습니다.
요소를 터치 가능으로 설정
먼저: 요소를 터치 가능으로 설정하려면 draggable 속성을 true로 설정하십시오:
<img draggable="true">
터치/놓기 내용 - ondragstart 및 setData()
그런 다음, 요소가 터치될 때 발생하는 일을 정의합니다.
위 예제에서 ondragstart 속성은 drag(event) 함수를 호출하여 무엇을 터치할지 정의합니다.
dataTransfer.setData() 메서드는 터치 가능 데이터의 데이터 타입과 값을 설정합니다:
function drag(ev) { ev.dataTransfer.setData("text", ev.target.id); }
이 예제에서 데이터 타입은 "text"입니다. 값은 이 터치 가능 요소의 id( "drag1")입니다.
拖到何处 - ondragover
드래그到哪里 - ondragover
ondragover 이벤트는 드래그된 데이터가 배치될 수 있는 위치를 정의합니다.
기본적으로, 데이터/요소는 다른 요소에 배치되지 않습니다. 드래그 앤 드롭을 구현하기 위해 이러한 요소의 기본 처리 방식을 방지해야 합니다.
event.preventDefault();
데이터 배치 - ondrop
드래그된 데이터를 떨어뜨릴 때 drop 이벤트가 발생합니다.
위의 예제에서 ondrop 속성은 drop 함수를 호출했습니다, drop(event):
function drop(ev) { ev.preventDefault(); var data = ev.dataTransfer.getData("text"); ev.target.appendChild(document.getElementById(data)); }
코드 설명:
- preventDefault() 호출하여 데이터의 브라우저 기본 처리 방식을 방지합니다(드롭 이벤트의 기본 동작은 링크 형식으로 열리는 것입니다)
- dataTransfer.getData() 메서드를 통해 드래그된 데이터를 얻습니다. 이 메서드는 setData() 메서드에서 동일한 유형으로 설정된 모든 데이터를 반환합니다
- 드래그된 데이터는 드래그된 요소의 id ("drag1")입니다
- 드래그된 요소를 배치 요소에 추가합니다
더 많은 예제
이미지를 드래그 앤 드롭
두 개의 <div> 요소 사이에서 이미지를 드래그 앤 드롭하는 방법:
CodeW3C.com 이미지를 직사각형에 끌어 들이세요.
- 이전 페이지 HTML5 지리 위치
- 다음 페이지 HTML5 웹 스토리지