드래그 앤 드롭 속성 - by. UXKM

요약 설명

WAI-ARIA (Web Accessibility Initiative - Accessible Rich Internet Applications)에서 정의한 드래그 앤 드롭 속성(Drag-and-Drop Attributes) 속성은 사용자가 마우스나 터치를 사용하지 않고도 드래그 앤 드롭 기능을 활용할 수 있도록 돕습니다.
특히, 보조 기술을 사용하는 사용자에게 현재 인터페이스에서 발생하는 드래그 앤 드롭과 관련된 상태와 피드백을 제공하여 접근성을 크게 향상시킵니다.

W3C ARIA Drag-and-Drop Attributes
MDN: ARIA Drag & drop attributes

aria-dropeffect 속성(권장되지 않음)

요약 설명

aria-dropeffect 속성은 WAI-ARIA(WAI-Accessible Rich Internet Applications)에서 정의된 속성 중 하나로, 드래그 앤 드롭 인터페이스에서 사용자가 드래그 가능한 객체가 특정 드롭 영역에 놓였을 때 어떤 효과가 발생할지를 나타냅니다.
그러나, WAI-ARIA 1.2에서는 aria-dropeffect 속성이 더 이상 사용되지 않는 것으로 권장됩니다. 대신, HTML5의 네이티브 드래그 앤 드롭 이벤트와 속성을 사용하여 접근성을 관리하는 것이 좋습니다

WAI-ARIA 1.2 Specification (aria-dropeffect)
MDN Web Docs (aria-dropeffect)

aria-dropeffect 속성 값

WAI-ARIA 1.2에서는 aria-dropeffect 속성의 사용이 권장되지 않지만, 이 속성은 여전히 다음과 같은 값들을 가질 수 있습니다.

  • copy

    드래그된 객체가 드롭되면 원본 객체가 복사됩니다.

  • move

    드래그된 객체가 드롭되면 원본 객체가 이동됩니다.

  • link

    드래그된 객체가 드롭되면 원본 객체에 대한 링크가 생성됩니다.

  • execute

    드래그된 객체가 드롭되면 실행 액션이 발생합니다.

  • popup

    드래그된 객체가 드롭되면 새 창이나 팝업이 생성됩니다.

  • none

    드롭 효과가 발생하지 않음을 명시합니다.

연관된 HTML 태그 및 역할

  • 연관된 태그

    <div>, <span>, <p>, <li>, <ul>, <section>, <article> 등 대부분의 HTML 요소에서 사용 가능합니다.

  • 연관된 역할

    드롭 가능한 요소에 대해 사용될 수 있으며, group, region, listbox, grid, tree, tabpanel 등의 역할과 함께 사용할 수 있습니다.

사용 시 주의사항

  • 더 이상 권장되지 않음

    aria-dropeffect는 WAI-ARIA 1.2에서 사용을 피하는 것이 좋습니다. HTML5의 드래그 앤 드롭 API와 같은 네이티브 기능을 사용하는 것이 권장됩니다.

  • 최신 접근성 표준 준수

    최신 접근성 표준에 맞춰 드래그 앤 드롭 인터페이스를 설계하고, 가능한 경우 키보드 지원을 포함하는 것이 중요합니다.

예시

잘못된 예시

WAI-ARIA 1.2에서는 aria-dropeffect의 사용이 권장되지 않으므로, 이 속성을 사용하지 않는 것이 좋습니다.

올바른 예시

이 예시에서는 aria-dropeffect 대신 HTML5의 네이티브 이벤트와 ARIA 역할 및 속성(role="region", aria-label)을 사용하여 접근성을 유지합니다.

파일을 복사하는 드롭 효과 구현 예시

링크를 생성하는 드롭 효과 구현 예시

시멘틱 구조의 예시

이 구조는 접근성을 높이기 위해 HTML5 드래그 앤 드롭 API와 ARIA 속성을 사용하여 파일 드롭 영역을 구현한 예시입니다. aria-dropeffect 대신 최신 접근성 표준을 따릅니다.

aria-grabbed 상태(권장되지 않음)

요약 설명

aria-grabbed 속성은 WAI-ARIA(Accessible Rich Internet Applications)에서 정의된 속성 중 하나로, 드래그 앤 드롭 인터페이스에서 사용자가 특정 요소를 "잡았는지" (즉, 드래그 중인지) 여부를 나타냅니다. 이 속성은 주로 스크린 리더 사용자에게 현재 요소가 드래그되고 있는 상태임을 알리는 데 사용됩니다.
그러나, WAI-ARIA 1.2에서는 aria-grabbed 속성이 더 이상 권장되지 않습니다. 대신, HTML5 네이티브 드래그 앤 드롭 이벤트를 사용하는 것이 권장됩니다.

WAI-ARIA 1.2 Specification (aria-grabbed)
MDN Web Docs (aria-grabbed)

aria-grabbed 속성 값

  • true

    요소가 현재 사용자가 "잡은" (드래그 중인) 상태임을 나타냅니다.

  • false

    요소가 현재 "잡히지 않은" (드래그되지 않은) 상태임을 나타냅니다.

  • undefined

    aria-grabbed 속성이 없으면, 기본적으로 요소가 드래그되지 않은 상태로 간주됩니다.

연관된 HTML 태그 및 역할

  • 연관된 태그

    <div>, <span>, <li>, <img>, <p>, <section>, <acticle> 등 대부분의 HTML 요소에서 사용 가능.

  • 연관된 역할

    드래그 가능한 요소와 관련하여 사용할 수 있으며, listitem, treeitem, gridcell, row, option 등의 역할과 함께 사용할 수 있습니다.

사용 시 주의사항

  • 더 이상 권장되지 않음

    aria-grabbed는 WAI-ARIA 1.2에서 사용을 피하는 것이 좋습니다. HTML5의 드래그 앤 드롭 API와 같은 네이티브 기능을 사용하는 것이 권장됩니다.

  • 대체 방법

    HTML5의 draggable 속성과 드래그 이벤트(dragstart, dragend 등)를 사용하여 드래그 상태를 처리하는 것이 더 나은 접근성 표준을 준수하는 방법입니다.

예시

잘못된 예시

WAI-ARIA 1.2에서 더 이상 aria-grabbed의 사용이 권장되지 않습니다. 대신 최신 HTML5 드래그 앤 드롭 API를 사용해야 합니다.

올바른 예시

이 예시에서는 aria-grabbed를 사용하지 않고 HTML5의 네이티브 드래그 앤 드롭 이벤트를 사용하여 드래그 상태를 관리합니다.

드래그 상태를 나타내는 예시 (권장되지 않음)

WAI-ARIA 1.2에서는 이 방법이 더 이상 권장되지 않습니다.

HTML5 드래그 앤 드롭을 사용한 드래그 상태 관리 예시

이 예시는 최신 접근성을 고려한 구현 방법을 보여줍니다.

시멘틱 구조의 예시

이 예시는 접근성을 고려한 드래그 앤 드롭 인터페이스를 구현하는 예시로, aria-grabbed 대신 HTML5 네이티브 드래그 앤 드롭 API를 사용합니다.