Skip to content

Drag Handle

DodaTech 2 min read

title: "Drag Handle — Designing Accessible Drag Handles" description: "Learn how to design accessible drag handles that are visible, keyboard-focusable, and clearly indicate draggable items." weight: 9 date: 2026-06-28 lastmod: 2026-06-28 tags: [accessibility, drag-drop]


Drag handles provide a clear visual and interactive target for initiating drag operations, and must be keyboard accessible and properly labeled.

## What You'll Learn

How to design drag handles that work for all users including keyboard and screen reader users.

## Why It Matters

Drag handles that are too small, invisible, or lack proper labeling make drag-and-drop inaccessible. Users must be able to identify and activate drag handles.

## Real-World Use

A mobile app has a list with a grip icon on the left of each item. The grip has aria-label="Drag item to reorder". On desktop, a tooltip explains "Drag to reorder."

## Drag Handle Design

```html
<ol aria-label="Sortable list">
  <li role="listitem" aria-label="Item 1: Design homepage">
    <button aria-label="Drag Design homepage to reorder"
            class="drag-handle"
            draggable="true"
            onclick="startDrag(event)">
      <svg aria-hidden="true" focusable="false" width="24" height="24"
           viewBox="0 0 24 24">
        <circle cx="12" cy="6" r="2" fill="#666"/>
        <circle cx="12" cy="12" r="2" fill="#666"/>
        <circle cx="12" cy="18" r="2" fill="#666"/>
      </svg>
    </button>
    <span>Design homepage</span>
  </li>
</ol>

CSS for Drag Handle

.drag-handle {
  cursor: grab;
  background: none;
  border: none;
  padding: 8px;
  border-radius: 4px;
  touch-action: none;
}

.drag-handle:active {
  cursor: grabbing;
}

.drag-handle:focus-visible {
  outline: 2px solid #0066cc;
  outline-offset: 2px;
}

Common Mistakes

1. Drag handle too small

Minimum 44x44px touch target for drag handles.

2. No aria-label on drag handle

Screen readers need to know the handle's purpose.

3. Drag handle not keyboard focusable

The drag handle must be a button or have tabindex="0".

4. No visual grab cursor

Use cursor: grab to indicate draggability.

5. Touch-action not set

Set touch-action: none on drag handles to prevent browser touch scrolling.

Practice Questions

1. What is the minimum size for a drag handle? 44x44 pixels minimum touch target.

2. How do you indicate an item is draggable? Use a grip icon cursor (cursor: grab), a visible drag handle, and draggable="true".

3. What attribute labels a drag handle for screen readers? aria-label on the drag handle button describing the item and action.

Challenge: Design a drag handle pattern that works on desktop and mobile. Include proper sizing, labeling, and cursors.

FAQ

Should every item have a drag handle?

Yes. Every draggable item needs a visible drag handle.

What is the best icon for a drag handle?

A six-dot grid icon (three rows of two dots) is the most recognized drag handle pattern.

Can I use the entire item as a drag handle?

It is better to have a dedicated drag handle to avoid accidental drag activation.

How do I indicate an item is being dragged?

Change the cursor to grabbing and add a box-shadow or opacity change.

Does draggable='true' work on button elements?

Yes. The draggable attribute works on HTML elements. Buttons with draggable='true' can be dragged.

Mini Project

Create a drag handle component with: grip icon, 44x44px minimum size, aria-label, focus indicator, and grab/grabbing cursors.

What's Next

Learn about Touch Support for accessible drag-and-drop on mobile devices.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro