• 회원가입
  • 로그인
  • 구글아이디로 로그인

[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>

 

결과보기



분류 제목
link HTML - <link> 태그 ★ - 외부소스연결 (= link태그 = 링크태그) (HTML5수정) ※ 파비…
basic HTML - <hr> 태그 - 주제 다른 문단구분선 (= hr태그 = hr요소 = 가로선 = 수평선 = 에이…
form HTML - <select> 태그 ★ - 선택메뉴 (= select태그 = 실렉트태그 = 셀렉트태그) (H…
api HTML5 - Drag and Drop - 마우스로 끌어서 놓기 (= 드래그앤드롭)
font HTML - <i> 태그 - 이탤릭체 (=기울어진 글씨체 = 글씨 기울어지게 = i태그 = 아이태그, 이탤…
etc HTML - <tt> 태그 - 텔레타이프 텍스트 (= tt태그 = 티티태그)
media HTML - <audio> 태그 ★ - 음성파일재생 (= audio태그 = 오디오태그)
font HTML - <b> 태그 ★ - 굵은글씨 (= b태그 = 비태그) ※ 볼드태그 / bold태그 / 글씨 긁…
basic HTML - <!--주석 내용--> 태그 ★ - 주석 처리 ※ 스크립트 태그 안 주석 의미
programming HTML - <embed> 태그 - 외부동영상재생 (= embed태그 = 엠베드태그, HTML5추가)
etc HTML - 키보드 단축키 모음 (Window/Mac)
style HTML - <style> 태그 ★ - 요소에 CSS스타일적용 (= style태그 = 스타일태그)
image HTML - <area> 태그 - 이미지맵에서 특정 링크 영역 (= area태그 = 에어리어태그) (HTML…
style HTML - <details> 태그 - 토글 가능한 세부사항(상세사항)을 표시 (= details태그 = 디…
form HTML - <textarea> 태그 ★ - 여러줄 입력창 (= 텍스트입력영역 = 텍스트영역 = textar…
font HTML - <strong> 태그 ★ - 굵은글씨 (= 글자굵기 = 폰트굵게 = strong태그 = 스트롱태…
image HTML - <map> 태그 - 이미지 특정 부분에 링크 (= map태그 = 이미지맵태그) ※ 이미지에 여러…
image HTML - <img> 태그 ★ - 이미지태그 (= img태그) ※ 이미지 일부 자르기, ※ 링크 허버 시,…
form HTML - <input> 태그 ★★★ - 입력창 + 입력버튼 (= input태그 = 인풋태그) ※ 자동포커…
font HTML - <u> 태그 ★ - 밑줄태그 (= u태그 = 유태그 = 언더라인태그) (HTML5재정의)
17/18
목록
찾아주셔서 감사합니다. Since 2012