반응형
https://www.w3schools.com/howto/howto_js_draggable.asp
아주 잘 작동해서 사용법만 짚고 넘어가려고 한다.
1. HTML
<!-- Draggable DIV -->
<div id="mydiv">
<!-- Include a header DIV with the same name as the draggable DIV, followed by "header" -->
<div id="mydivheader">Click here to move</div>
<p>Move</p>
<p>this</p>
<p>DIV</p>
</div>
부모 div를 만들고, 내부 컴포넌트를 구성한다.
부모 div에 mydiv라는 id를 주었다면, 드래그 할 수 있게 해주는 부분의 id를 mydivheader라고 준다.
밑에 js에서 mydiv+header라는 아이디로 element를 잡아내기 때문에 부모에 어떤 아이디를 하든
드래그 할 부분에는 부모아이디+heaer를 id로 해준다.
2. CSS
#mydiv {
position: absolute;
z-index: 9;
background-color: #f1f1f1;
border: 1px solid #d3d3d3;
text-align: center;
}
#mydivheader {
padding: 10px;
cursor: move;
z-index: 10;
background-color: #2196F3;
color: #fff;
}
부모 element에는 position: absoulte; 가 포인트이고
자식 element에는 cursor: move;가 포인트이다.
3. Javascript
// Make the DIV element draggable:
dragElement(document.getElementById("mydiv"));
function dragElement(elmnt) {
var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;
if (document.getElementById(elmnt.id + "header")) {
// if present, the header is where you move the DIV from:
document.getElementById(elmnt.id + "header").onmousedown = dragMouseDown;
} else {
// otherwise, move the DIV from anywhere inside the DIV:
elmnt.onmousedown = dragMouseDown;
}
function dragMouseDown(e) {
e = e || window.event;
e.preventDefault();
// get the mouse cursor position at startup:
pos3 = e.clientX;
pos4 = e.clientY;
document.onmouseup = closeDragElement;
// call a function whenever the cursor moves:
document.onmousemove = elementDrag;
}
function elementDrag(e) {
e = e || window.event;
e.preventDefault();
// calculate the new cursor position:
pos1 = pos3 - e.clientX;
pos2 = pos4 - e.clientY;
pos3 = e.clientX;
pos4 = e.clientY;
// set the element's new position:
elmnt.style.top = (elmnt.offsetTop - pos2) + "px";
elmnt.style.left = (elmnt.offsetLeft - pos1) + "px";
}
function closeDragElement() {
// stop moving when mouse button is released:
document.onmouseup = null;
document.onmousemove = null;
}
}
함수를 선언하고 함수의 인수로 부모 element를 넣어준다.
끝.
'웹 프로그래밍' 카테고리의 다른 글
[AWS] 인스턴스 시작, 종료 접근 권한 주기.(보완필요) (0) | 2020.05.23 |
---|---|
[JS] ES6 내 수준 (0) | 2020.05.22 |
[JS] 자바스크립트로 스크롤이 제일 밑으로 내려갔을 때 감지하는 방법 (0) | 2020.05.21 |
[JS] JSON 형식을 KEY 값으로 정렬하기 (0) | 2020.05.19 |
[JS] Scroll Down, 스크롤 제일 하단으로 움직이기 animate() (0) | 2020.05.16 |
댓글