HTML

[api] HTML5 - Drag and Drop - 마우스로 끌어서 놓기 (= 드래그앤드롭)

목차
  1. Drag and Drop 예제 - 1회만
  2. Drag and Drop 예제 - 반복

 

Drag and Drop 예제 - 1회만

 

<style>

#box {

  width: 60px;

  height: 50px;

  padding: 10px;

  border: 1px solid silver;

  margin: 0 0 20px;

}

</style>


<script>

function drag(ev) {

  ev.dataTransfer.setData("text", ev.target.id);

}

 

function dragOver(ev) {

  ev.preventDefault(); // 요소이동불가 기본동작을 차단 (= 드롭 허용)

}

 

function drop(ev) {

  ev.preventDefault(); // 링크로 열리는 기본동작을 차단

  var data = ev.dataTransfer.getData("text");

  ev.target.appendChild(document.getElementById(data));

}

</script>


<div id="box" ondrop="drop(event)" ondragover="dragOver(event)"></div>

 

<img id="hz" src="https://i.imgur.com/PQNhCln.gif" draggable="true" ondragstart="drag(event)">

 

결과보기


[코드 설명]

 

1.

draggable="true" 속성

드래그 할 대상에 추가해 드래그 가능하도록 설정.

 

2.

ondragstart 이벤트

이 이벤트 발생 시, 드래그 할 데이터를 지정하는 drag (event) 함수가 호출됨.

dataTransfer.setData() 메소드 : 데이터 유형과 드래그 된 데이터의 값을 설정.

이 경우 데이터 유형은 "text"이고, 값은 드래그 가능한 요소의 id임. ( "hz")

 

3.

ondragover 이벤트

이 이벤트 발생 시, 드래그 한 데이터를 놓을 위치를 지정함.

데이터와 요소는 원래 다른 요소로 끌어다놓을 수 없으므로,

이를 끌어다놓기 위해선, 요소의 기본동작을 차단해야 가능. (아래 메서드 이용)

event.preventDefault()

 

4.

ondrop 이벤트

이 이벤트 발생 시, drop(event) 함수 호출.

event.preventDefault() 메서드로 데이터에 대한 브라우저 기본 처리 차단. (※ 기본값: 드롭 시 링크로 열림.)

dataTransfer.getData() 메소드로 드래그 한 데이터 가져옴.

이 메소드는 setData () 메소드에서 동일한 유형으로 설정된 모든 데이터를 반환.

드래그 한 데이터는 드래그 한 요소의 ID임. ( "hz").

드래그 한 요소를 드롭 요소에 추가.

 

 

Drag and Drop 예제 - 반복

 

<style>

#box1, #box2 {

  float: left;

  width: 80px;

  height: 50px;

  margin: 10px;

  padding: 10px;

  border: 1px solid black;

}

</style>


<script>

function drag(ev) {

  ev.dataTransfer.setData("text", ev.target.id);

}

 

function dragOver(ev) {

  ev.preventDefault();

}

 

function drop(ev) {

  ev.preventDefault();

  var data = ev.dataTransfer.getData("text");

  ev.target.appendChild(document.getElementById(data));

}

</script>


<div id="box1" ondrop="drop(event)" ondragover="dragOver(event)">

  <img src="https://i.imgur.com/PQNhCln.gif" draggable="true" ondragstart="drag(event)" id="drag1">

</div>


<div id="box2" ondrop="drop(event)" ondragover="dragOver(event)"></div>

 

결과보기



분류 제목
api HTML5 - Server-Sent Event - 서버전송이벤트 (= 서버센트이벤트)
etc HTML - 키보드 단축키 모음 (Window/Mac)
attribute HTML - lang 속성 ★ - 언어코드 (Language Code) + 국가코드 (Country Code…
etc HTML - 인터넷 (에러/오류) 의미 = (인터넷에러/인터넷오류) 종류 ★★★ + 500 Internal …
intro HTML - HTML5 사용조건 / HTML4.01과 다른점 (= HTML5 vs HTML401 차이점)
intro HTML - block요소 vs inline요소 ★★★★★ - (블락요소/블럭요소/블록요소 vs 인라인요소…
intro HTML - (Ctrl+U: 페이지 소스보기 HTML) vs (F12키: 개발자도구 요소검사 HTML) 차이…
etc HTML - 요소 클릭 안되는 경우 (= a태그 클릭 불가능 에러 원인/이유 = 클릭 실패/에러/장애 케이스…
etc HTML - inputmode 전역속성 - 사용자 입력값 데이터타입 힌트 (= inputmode속성 = 인풋…
intro HTML - (경로/주소) ★★★★★ - (절대경로/상대경로)/(절대주소/상대주소) 뜻/의미/개념/정의
etc HTML - Entity (= 태그 실체값 = 특수문자/기호 실질값 = 독립체)
basic HTML - <hgroup> 태그 - <h1>~<h6> 제목 묶기 (= 제목그룹 = hgroup태그 = 에이…
basic HTML - &nbsp; 기호 - 줄바꿈 않는 공백/빈칸 표시 특수문자 (= 공백기호/빈칸기호 = Non-B… 1
attribute HTML - accept 속성 ★ - 파일 업로드 시, 서버가 허용하는 파일 유형 지정 (= accept속성…
attribute HTML - accept-charset 속성 - FORM 제출에 사용할 문자 인코딩 지정 (= accept-…
10/24
목록
 홈  PC버전 로그인 일본어
그누앞단언어
그누뒷단언어
그외코딩언어
그누보드
제작의뢰
Q&A
커뮤니티
웹유틸
회원센터
홈짱닷컴 PC버전 로그인