Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- react 프로젝트 리팩토링
- 프로그래머스 데브코스 프론트엔드
- 모던 자바스크립트 Deep Dive TIL
- 프로그래머스 K_Digital Training
- 모던 자바스크립트 Deep Dive
- 우테캠 회고록
- frontend roadmap study
- 머쓱이
- 프로그래머스 K_Digital Training 프론트엔드
- Frontend Roadmap
- Vue3
- K_Digital Training
- 모던 자바스크립트 TIL
- KDT 프로그래머스
- react customHook 예시
- 인프런 자바스크립트 알고리즘 문제풀이
- TypeScript 문법 소개
- 모던 자바스크립트 딥다이브
- 프로그래머스 데브코스 프론트엔드 TIL
- KDT 프로그래머스 데브코스 프론트엔드
- useEffect return
- 백준 js
- 투포인터알고리즘 js
- useRef 지역 변수
- Vue3 Router
- 모던 javascript Deep Dive
- 리팩토링 회고
- 백준 node.js
- 프로그래머스 데브코스
- 개발자 특강
Archives
- Today
- Total
프론트엔드 개발자의 기록 공간
[VanillaJS] TodoList Drag & Drop 이벤트 처리 본문
❗❗ 데브코스 32일차 (09.14)
오늘 주제는 Drag&Drop 이벤트 처리에 대해서 학습을 진행했다.
웹사이트를 이용하게 되면 Drag&Drop을 많이 사용해봤을 것이다.
예를들어 이미지를 옮기거나 폴더에서 파일을 옮길때도 Drag&Drop 이벤트가 발생하고,
Notion(노션)을 사용할때도 자유롭게 Drag&Drop을 이용해서 컨텐츠 정보 위치를 바꾼다.
위의 예시들은 모두 구현 방법은 제각각이지만, 원리는 동일할 것이다.
여러가지 옵션이 있지만 해당 로직에서는 크게 3가지를 통해 구현했다.
1. dragstart - Drag를 시작했을 때 발생하는 이벤트
$이벤트대상.addEventListener("dragstart", (e) => {
//drag 처리할 대상 DOM
const $li = e.target.closest("li");
//drag 이벤트의 상태를 담음 key, value
e.dataTransfer.setData("todoId", $li.dataset.id);
});
dataTransfer는 drag 이벤트의 상태를 담고있는 인터페이스이다.
2. dragover - Drag 요소가 움직일 때 발생하는 이벤트
$이벤트대상.addEventListener("dragover", (e) => {
//이벤트 발생 중지
e.preventDefault();
//작업의 유형타입 지정 (move, copy, copyLink 등)
e.dataTransfer.dropEffect = "move";
});
옮기는 도중에 이벤트가 발생하지 않도록 처리하고 move 상태값으로 지정해준다.
3. drop - Drop을 했을 때 발생하는 이벤트 (drag가 끝났을 때)
$이벤트대상.addEventListener("drop", (e) => {
e.preventDefault();
//위에서 지정한 key값으로 getDate 수행
const dropeedTodoId = e.dataTransfer.getData("todoId");
~~원하는 로직 수행
});
대략적으로 위의 3단계를 수행하여 Drag&Drop 이벤트를 처리한다. 자세한건 MDN 문서를 보면 된다.
📖 학습한 내용
- VanillaJS
- Drag & Drop 이벤트 처리
728x90
'프로그래머스 데브코스_FE > TIL' 카테고리의 다른 글
[CSS Preprocessor ] Sass(SCSS) (1) (0) | 2021.10.01 |
---|---|
[CSS] CSS심화(2) (0) | 2021.09.30 |
[VanillaJS] 무한 스크롤 UI 구현하기 (0) | 2021.09.28 |
[VanillaJS] 고양이 사진첩 만들기_과제 (0) | 2021.09.14 |
[VanillaJS] 고양이 사진첩 만들기(2) (0) | 2021.09.13 |
Comments