브라우저 지원이 프로젝트 하다보면 중요성을 깨닫는다....

 

 

간단한 드로우 앤 드롭 예제이다.

<!DOCTYPE HTML>
<html>
<head>
<style>
#div1 {
  width: 350px;
  height: 70px;
  padding: 10px;
  border: 1px solid #aaaaaa;
}
</style>
<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>

<p>Drag the W3Schools image into the rectangle:</p>

<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
<br>
<img id="drag1" src="img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69">

</body>
</html>

 

 

예제 설명

 

<img draggable="true">  요소를 드래그 가능하게 만드는 것이다. 특성을 true로 한다.

 

ondragstart 속성 : 드래그할 데이터를 지정하는 drag(event) 함수를 호출

 

dataTransfer.setData() : 끌어온 데이터의 데이터 유형과 값을 설정

//이 경우 데이터 유형은 "텍스트"이고 값은 드래그할 수 있는 요소("drag1")의 id입니다.
// 즉 끌고 올 데이터는 이미지 이다.

function drag(ev) {
  ev.dataTransfer.setData("text", ev.target.id);
}

 

 

ondragover 이벤트 : 끌어온 데이터를 놓을 수 있는 위치를 지정한다.

 

기본적으로 데이터/요소는 다른 요소에 놓을 수 없습니다. 

삭제를 허용하려면 요소의 기본 처리를 방지해야 합니다.

이는 event.preventDefault() 메소드를 호출하여 수행됩니다.

 

 

ondrop 이벤트 : drop(event) 함수를 호출

 

function drop(ev) {
  ev.preventDefault();
  var data = ev.dataTransfer.getData("text");
  ev.target.appendChild(document.getElementById(data));
}

 

drop 함수 설명

 

1. 데이터의 브라우저 기본 처리를 방지하려면 preventDefault()를 호출하십시오(기본값은 놓을 때 링크로 열림).

 

2. dataTransfer.getData() 메서드로 드래그한 데이터를 가져옵니다. 

이 메소드는 setData() 메소드에서 동일한 유형으로 설정된 모든 데이터를 리턴합니다.

 

3. 드래그된 데이터는 드래그된 요소("drag1")의 id입니다. (즉 이미지)

 

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

'Web > HTML' 카테고리의 다른 글

HTML 웹 작업자 API  (0) 2023.01.04
HTML 웹 저장소 API  (0) 2023.01.04
HTML 위치 정보 API  (0) 2023.01.03
HTML 플러그인  (0) 2023.01.03
HTML 미디어  (0) 2023.01.03

+ Recent posts