드래그 앤 드롭

Drag and Drop

개념

화면의 요소를 누른 채 끌어다 다른 자리에 놓아 순서나 소속을 바꾸는 조작입니다.

등장 배경

화면 위의 물건을 옮기려면 예전에는 그 일을 말로 바꿔야 했습니다. 파일을 다른 폴더에 넣으려면 옮기라는 명령과 함께 출발지와 도착지를 글자로 적었습니다. 목록의 순서를 바꾸는 일도 마찬가지여서, 항목마다 붙은 번호를 고치거나 위로 올리는 버튼을 눌렀습니다.

열두 번째 항목을 두 번째 자리로 올리려는 사람을 보면 문제가 분명해집니다. 버튼을 열 번 누르는 동안 화면은 계속 다시 그려지고, 몇 번째까지 왔는지 세는 일은 사람 몫입니다. 한 번 더 눌렀다가 다시 내려야 하는 일도 잦습니다. 머릿속에서는 이미 끝난 동작인데 손은 같은 자리를 열 번 두드리고 있었습니다.

끌어다 놓는 조작은 그 간격을 없애려고 만들어졌습니다. 책상 위의 서류를 다른 자리로 옮길 때 사람은 집어서 옮겨 놓지, 옮기라고 말하지 않습니다. 화면 안의 요소를 실제 물건처럼 다루게 해서 하려는 일과 하는 동작을 같은 모양으로 맞춘 겁니다. 어포던스, 즉 생김새만으로 무엇을 할 수 있는지 짐작하게 하는 성질을 화면에서 처음으로 제대로 활용한 사례이기도 합니다.

작동 방식

잡고, 끌고, 놓는 세 동작으로 이뤄지고 각 동작마다 화면이 반응을 돌려줘야 완성됩니다.

  1. 잡기. 누르는 것만으로는 시작되지 않고, 누른 채 일정 거리를 움직여야 시작됩니다. 마우스에서는 서너 픽셀을 기준으로 두고, 손가락으로 쓰는 화면에서는 거리 대신 0.3초쯤 길게 누르는 것을 조건으로 겁니다. 이 기준이 없으면 목록을 위아래로 넘기려던 손짓이 매번 항목을 집는 동작으로 잡힙니다. 시작되는 순간 잡힌 요소가 살짝 떠오르거나 기울어지면서 지금 들려 있다는 것을 알립니다.
  2. 끌기. 잡힌 요소를 따라다니는 반투명한 사본이 손끝에 붙고, 놓을 수 있는 자리에는 선이나 빈칸이 생깁니다. 이 표시가 없으면 손을 떼기 전까지 어디에 들어갈지 알 수 없어서 놓고 나서야 결과를 확인하게 됩니다. 목록이 화면보다 길면 위아래 끝에 닿았을 때 저절로 스크롤되는 동작도 여기에 붙습니다. 이 동작이 없으면 보이는 범위 밖으로는 옮길 수 없어서, 스무 번째 항목을 맨 위로 보내는 일이 아예 불가능해집니다.
  3. 놓기. 놓을 수 있는 자리에서 손을 떼면 그 자리에 들어가고, 그렇지 않은 자리에서 떼면 원래 있던 곳으로 되돌아갑니다. 되돌아가는 움직임을 0.2초쯤 보여 주는 이유는 사라졌다고 오해하지 않게 하려는 것입니다.
  4. 확정. 화면에서 자리가 바뀐 것과 그 변경이 저장된 것은 다른 일입니다. 저장이 실패하면 화면도 원래대로 돌려놓고 실패했다고 알려야 합니다. 여기서 피드백을 빼먹으면 사용자는 바뀐 줄 알고 창을 닫습니다.

쓰이는 곳

같은 조작이지만 무엇을 바꾸느냐에 따라 네 갈래로 나뉩니다.

  1. 순서 바꾸기. 목록 안에서 위아래로 옮겨 우선순위를 정합니다. 할 일 목록, 재생 목록, 메뉴 편집 화면이 여기 해당합니다.
  2. 소속 바꾸기. 다른 묶음으로 옮겨 상태나 분류를 바꿉니다. 칸반 보드에서 카드를 진행 중 열에서 완료 열로 옮기는 것이 대표적입니다. 이때 옮기는 동작 자체가 상태를 바꾸는 명령이 됩니다.
  3. 파일 넣기. 브라우저 밖의 파일을 창 안으로 끌어다 놓아 올립니다. 파일 선택 창을 여는 것보다 단계가 적어서 업로드가 잦은 제품은 대부분 둘 다 제공합니다.
  4. 배치. 편집 도구에서 요소를 원하는 좌표에 두는 일입니다. 순서를 바꾸는 쪽과 달리 정해진 칸이 없어서, 격자에 맞춰 붙는 보조 기능이 없으면 몇 픽셀씩 어긋난 결과가 쌓입니다. 나란히 놓인 카드 네 장의 왼쪽 끝이 2픽셀씩 다른 화면은 어디가 잘못됐는지 짚기 어려운 채로 어색하게만 보입니다.

실무 용례

"이 목록 드래그 앤 드롭으로 순서 바꾸게 해 주세요. 지금은 위로 버튼밖에 없어요."

버튼을 반복해서 누르는 방식을 끌어다 놓는 방식으로 바꾸자는 요청입니다.

"모바일에서는 스크롤이랑 충돌해서 길게 누른 다음에 끌리게 했어요."

같은 손짓이 두 가지로 해석되는 문제를 눌러서 구분하기로 풀었다는 설명입니다.

"드래그만 되면 키보드로는 순서를 못 바꿔요."

이 조작만 두면 쓸 수 없는 사람이 생긴다는 지적입니다.

페이지덱에서는 문서함의 정렬 방식을 두고 이 이야기가 나왔습니다. 민서가 폴더 안 문서를 끌어다 순서를 바꾸는 안을 냈고, 태오가 그 자리에서 되묻습니다. 목록이 이백 개일 때 스무 번째 문서를 맨 위로 올리려면 화면이 몇 번이나 자동으로 스크롤돼야 하는지, 그동안 손을 떼면 어떻게 되는지였습니다.

둘이 정한 답은 끌어다 놓는 방식을 두되 맨 위로 보내기 항목을 오른쪽 메뉴에 함께 두는 것이었습니다. 지현은 여기에 조건을 하나 더 붙였습니다. 순서를 바꾼 결과가 나에게만 보이는지 팀 전체에 보이는지를 화면에 적어 두자는 것이었는데, 공유 문서함에서는 이 질문이 순서 자체보다 자주 나옵니다.

흔한 오해

직관적인 조작이니 설명이 필요 없다고 보는 경우가 많습니다. 실제로 한 번 해 본 사람에게는 쉬우니 그렇게 느껴집니다. 문제는 해 보기 전까지 이 기능이 있다는 사실을 알 방법이 없다는 점입니다. 버튼은 화면에 보이지만 끌 수 있다는 사실은 보이지 않습니다. 그래서 시그니파이어, 즉 조작할 수 있다고 알려 주려고 일부러 붙인 단서가 필요합니다. 항목 왼쪽의 손잡이 모양 점 여섯 개, 올려놓으면 바뀌는 커서 모양이 그 역할을 합니다. 단서 없이 만들어 두면 사용성 테스트에서 그 기능을 찾아내는 사람이 열 명 중 두세 명에 그칩니다.

이 조작 하나로 충분하다고 보는 것도 흔합니다. 마우스로 해 보면 잘 되니 다른 길을 만들 이유가 없어 보입니다. 그런데 손이 떨리는 사람, 마우스 대신 키보드만 쓰는 사람, 화면을 소리로 듣는 사람에게 누른 채 정확한 거리를 이동하는 동작은 어렵거나 아예 불가능합니다. 접근성 기준이 같은 일을 하는 다른 경로를 함께 두라고 요구하는 이유가 여기 있습니다. 키보드 내비게이션으로 항목을 고른 뒤 방향키로 자리를 옮기게 하거나, 맨 위로 보내기 같은 메뉴 항목을 하나 두면 해결됩니다. 둘 다 처음 설계할 때 넣으면 화면 구조가 달라지지 않지만, 나중에 붙이려면 목록을 통째로 다시 그려야 합니다.

같이 보면 좋은 페이지

  • 인터랙션 디자인

    이 조작이 어느 갈래에 속하고 옆에 무엇이 있는지 먼저 봅니다

  • 제스처

    같은 입력 갈래에 있고, 발견되기 어렵다는 약점을 공유해서 해법도 비슷합니다

마지막 업데이트 2026-09-16