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

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

 

결과보기


방문 감사합니다. (즐겨찾기 등록: Ctrl + D)

분류 제목
attribute HTML - charset 속성 - 문자셋 지정 (= charset속성 = 차셋속성) ※ 문자인코딩, 언어셋
attribute HTML - checked 속성 ★ - 미리 (체크박스/라디오) 체크 여부 지정 (= checked속성 = …
attribute HTML - cite 속성 - (인용출처/삭제이유/삽입이유) 주소 연결 (= cite속성 = 사이트속성)
attribute HTML - class 속성 ★★★ - 클래스명 선택자 지정 (= class속성 = 클래스속성)
attribute HTML - color 속성 - (HTML5 지원 X) 글자색 지정 (= color속성 = 컬러속성)
attribute HTML - cols 속성 - <textarea> 세로열수(=세로줄수 = 가시너비) 지정 (= cols속성 …
attribute HTML - colspan 속성 ★ - 병합할 가로셀 개수 지정 (= colspan속성 = 콜스팬속성)
attribute HTML - content 속성 ★ - 메타데이터 값 지정 (= content속성 = 콘텐트속성|컨텐트속성)
attribute HTML - contenteditable 속성 - 요소 내용 수정 가능 여부 지정 (= contentedit…
attribute HTML - controls 속성 - (오디오/비디오) 플레이어의 제어창 표시 여부 (= controls속성…
attribute HTML - coords 속성 - 이미지맵 링크영역 좌표 표시 (= coords속성 = 코즈속성/코드스속성/…
attribute HTML - data 속성 - <object> 태그의 리소스 URL 주소 지정 (= data속성 = 데이터속…
attribute HTML - data-* 속성 ★★★ - 특정 (페이지/애플리케이션)의 사용자 데이터 저장 (= data-속…
attribute HTML - datetime 속성 - 날짜시간 지정 (= datetime속성 = 데이트타임속성)
attribute HTML - default 속성 - 기본 재생 트랙 지정 (= default속성 = 디폴트속성)
attribute HTML - defer 속성 ★★★ - 페이지 파싱 완료 후 외부스크립트 실행 (= defer속성 = 디퍼속…
attribute HTML - dir 속성 - 텍스트 출력방향 지정 (= dir속성 = 디르속성|디렉션속성)
attribute HTML - dirname 속성 - input/textarea 요소의 텍스트 방향 지정 (= dirname속…
attribute HTML - disabled 속성 - 요소 비활성화 지정 (= disabled속성 = 디스에이블드속성|디세이…
attribute HTML - download 속성 - 파일 다운로드 지정 (= download속성 = 다운로드속성) ※ 다운…
9/18
목록
찾아주셔서 감사합니다. Since 2012