목차
drag 예제 - HTML 속성 이용 방식
drag 정의
drag 구문
drag 예제 - JS 메서드 이용 방식
drag 예제 - HTML 속성 이용 방식
<style>
.box {
float: left;
width: 150px;
height:100px;
margin: 15px;
padding: 10px;
border: 1px solid gray;
}
#hz {padding:10px; border:1px solid red; cursor:pointer;}
#demo {clear:both;}
</style>
<div class="box" ondrop="drop (event)" ondragover="dragOver (event)">
<p ondragstart="dragStart (event)" ondrag="onDrag (event)" draggable="true" id="hz">홈짱닷컴 Homzzang.com</p>
</div>
<div class="box" ondrop="drop (event)" ondragover="dragOver (event)"></div>
<p id="demo">드래그해서 이동 가능.</p>
<script>
function dragStart (event) {
event.dataTransfer.setData("Text ", event.target.id);
}
function onDrag (event) {
document.getElementById("demo").innerHTML = "p 요소 드래그 중";
}
function dragOver (event) {
event.preventDefault(); // 드롭 허용
}
function drop (event) {
event.preventDefault(); // 링크열기 차단
var data = event.dataTransfer.getData("Text ");
event.target.appendChild(document.getElementById(data));
document.getElementById("demo").innerHTML = "p 요소 드래그 완료";
}
</script>
결과보기
drag 정의
요소나 텍스트를 마우스로 드래그 (= 요소 선택 후 다른 곳으로 끌 때) 이벤트 발생.
1.
요소 드래그 가능하게 하려면, draggable 속성 이용.
단, 링크와 이미지는 기본적으로 드래그 가능하며 draggable 속성 불필요.
2-1. 드래그가능 대상 (= 끌어지는 요소) 관련 이벤트 :
2-2. 드롭타겟 (= 목적지요소) 관련 이벤트 :
3.
이벤트확산 : O
취소가능성 : O
이벤트타입 : DragEvent
지원 HTML : 모든 요소
DOM 버전 : Level 3 Events
4. IE9 이상 주요 최신 브라우저 모두 지원.
drag 구문
HTML 방식
< element ondrag=" homzzang() ">
JS 방식
object .ondrag = function(){ homzzang() };
object .addEventListener("drag", homzzang );
※ addEventLister() 방식 주의사항 2가지 : (이벤트명에 on 안 붙인. / 실행함수명 뒤에 소괄호 안 붙임)
※ addEventListener() 메서드는 IE9 이상 지원.
drag 예제 - JS 메서드 이용 방식
<style>
.box {
float: left;
width: 200px;
height: 60px;
padding: 0;
margin: 15px;
border: 1px solid silver;
}
.box p {padding: 10px; margin:0;}
.box p:hover {cursor:pointer;}
#demo {clear:both; padding:20px;}
</style>
<div class="box ">
<p draggable="true" id="dragtarget">홈짱닷컴 Homzzang.com</p>
</div>
<div class="box "></div>
<p id="demo "></p>
<script>
document.addEventListener("dragstart ", function(event) {
event.dataTransfer.setData("Text ", event.target.id);
document.getElementById("demo ").innerHTML = "드래그 시작";
event.target.style.opacity = "0.3";
});
document.addEventListener("drag ", function(event) {
document.getElementById("demo ").style.color = "red";
});
document.addEventListener("dragend ", function(event) {
document.getElementById("demo ").innerHTML = "드래그 완료";
event.target.style.opacity = "1";
});
document.addEventListener("dragenter ", function(event) {
if ( event.target.className == "box " ) {
event.target.style.border = "1px dashed red";
}
});
document.addEventListener("dragover ", function(event) {
event.preventDefault();
});
document.addEventListener("dragleave ", function(event) {
if ( event.target.className == "box " ) {
event.target.style.border = "";
}
});
document.addEventListener("drop ", function(event) {
event.preventDefault();
if ( event.target.className == "box " ) {
document.getElementById("demo ").style.color = "";
event.target.style.border = "";
var data = event.dataTransfer.getData("Text ");
event.target.appendChild(document.getElementById(data));
}
});
</script>
결과보기
주소 복사
랜덤 이동