속성 · 사용 중단 · 전역
aria-dropeffect
끌어 온 객체를 이 대상에 놓으면 어떤 동작(복사, 이동, 링크 등)이 일어나는지 알리던 속성입니다. ARIA 1.1부터 사용 중단(deprecated)되었습니다.
한눈에 보기
- 구분
- 속성 (Property)
- 분류
- 사용 중단
- 값 형식
- 토큰 목록 (token list): copy / execute / link / move / none / popup
- 기본값
none- 적용 범위
- 모든 요소 (전역 속성)
- HTML 대체
- HTML 드래그 앤 드롭 API의
dataTransfer.dropEffect(보조기술에 전달되지 않습니다)
설명
aria-dropeffect는 드래그 앤 드롭에서 놓을 대상(drop target)에 붙여, 끌어 온 객체를 놓았을 때 일어나는 동작을 알리던 속성입니다. aria-grabbed와 짝을 이루어 "집은 항목"과 "놓을 수 있는 곳"을 표현하도록 설계되었습니다.
이 속성은 ARIA 1.1에서 사용 중단(deprecated)되었고 ARIA 1.2에서도 같은 상태입니다. 명세는 향후 버전에서 새로운 기능으로 대체될 예정이니 사용 중단된 것으로 취급하라고 안내합니다. 주요 화면낭독기와 브라우저는 이 속성을 거의 지원하지 않았기 때문에, 넣더라도 사용자에게 전달되는 정보가 사실상 없습니다.
더 근본적인 이유는 이 속성이 정보를 전달할 뿐 조작 방법을 제공하지 않는다는 점입니다. 키보드 사용자나 화면낭독기 사용자는 마우스로 끌 수 없으므로, "여기에 놓으면 이동됩니다"라는 정보보다 끌지 않고도 같은 결과를 얻는 방법이 필요합니다. WCAG 2.2의 2.5.7 드래그 동작(AA)은 드래그로 하는 기능에 한 번의 포인터 동작으로 할 수 있는 대체 방법을 요구합니다.
대체 방법은 다음과 같습니다.
- 버튼으로 옮기기: 각 항목에 "위로 이동"·"아래로 이동" 버튼이나 "다른 목록으로 이동" 메뉴를 둡니다. 가장 단순하고 지원이 확실합니다.
- 키보드 조작 제공: APG "Rearrangeable Listbox" 예제처럼
listbox에서 항목을 선택한 뒤 버튼이나 단축키로 순서를 바꿉니다. 선택 상태는aria-selected, 집기·놓기 상태가 필요하면aria-pressed를 가진 토글 버튼으로 표현합니다. - 결과 알리기: 이동이 끝나면
status라이브 리전으로 "사과를 3번째로 옮겼습니다"처럼 알립니다(aria-live). - 필요하면 이름·설명 보충: 사용 방법은
aria-describedby로, 단축키는aria-keyshortcuts로 알립니다.
검수할 때는 이 속성이 남아 있다면 제거를 권고하고, 드래그 앤 드롭 기능이 키보드만으로도 실행되는지, 드래그 없이 클릭(탭)만으로 같은 결과를 얻을 수 있는지(WCAG 2.5.7), 결과가 화면낭독기에 안내되는지 확인합니다.
값
| 값 | 의미 |
|---|---|
copy | 원본의 복사본이 대상에 놓입니다. |
execute | 끌어 온 객체를 입력으로 대상이 지원하는 기능이 실행됩니다. |
link | 끌어 온 객체에 대한 참조(바로가기)가 대상에 만들어집니다. |
move | 원본이 원래 위치에서 제거되어 대상으로 옮겨집니다. |
none 기본값 | 놓을 수 없습니다. 다른 값과 함께 쓰면 무시됩니다. |
popup | 놓을 때 동작(복사·이동 등)을 고르는 팝업 메뉴나 대화상자가 나타납니다. |
사용 예
사용 중단된 방식
<!-- 비권장: ARIA 1.1부터 사용 중단, 보조기술 지원 거의 없음 -->
<ul aria-label="할 일">
<li draggable="true" aria-grabbed="true">보고서 작성</li>
</ul>
<ul aria-label="완료" aria-dropeffect="move">...</ul>대체: 버튼으로 옮기기
<ul aria-label="할 일">
<li>
보고서 작성
<button type="button" aria-describedby="move-help">완료로 이동</button>
</li>
</ul>
<p id="move-help" hidden>항목을 완료 목록으로 옮깁니다.</p>
<p role="status" id="move-status"></p>이동 결과 알리기
function moveToDone(item) {
doneList.appendChild(item);
document.getElementById('move-status').textContent =
item.firstChild.textContent.trim() + ' 항목을 완료로 옮겼습니다.';
}화면낭독기에서는
| 상황 | 들리는 안내 (예) |
|---|---|
| aria-dropeffect가 있는 목록에 도달 | 완료, 목록 (대부분의 화면낭독기는 드롭 효과를 안내하지 않음) |
| 대체 방식: "완료로 이동" 버튼을 누름 | 보고서 작성 항목을 완료로 옮겼습니다. |
사용 지침
이렇게 쓰세요
- 기존 코드에 남아 있다면 제거하고, 키보드로 조작할 수 있는 대체 방법을 제공합니다.
- 드래그 기능에는 클릭·탭 한 번으로 할 수 있는 대체 수단을 둡니다(WCAG 2.5.7).
- 이동·복사 결과는 라이브 리전으로 알립니다.
이렇게 쓰지 마세요
- 새 코드에
aria-dropeffect를 쓰지 않습니다. - 이 속성을 넣었다는 이유로 드래그 앤 드롭이 접근 가능하다고 판단하지 않습니다.
- 마우스 드래그로만 동작하는 기능을 만들지 않습니다.
사용할 수 있는 역할
전역 속성이므로 모든 역할과 HTML 요소에 쓸 수 있습니다. 특히 다음 역할과 자주 함께 씁니다.
관련 속성·패턴
이 속성을 쓰는 패턴