Accessible Drag-and-Drop: Kanban Boards, Sortable Lists & Keyboard Alternatives

WCAG 2.2 Success Criterion 2.5.7 mandates single-pointer and keyboard alternatives for dragging operations. Learn how to engineer accessible Kanban boards and sortable UI.

Drag-and-drop interfaces are ubiquitous in project management Kanban boards (Trello, Jira), file uploaders, and reorderable dashboard widgets. However, mouse-only drag interactions completely exclude blind users, users with tremors, and switch-device operators. WCAG 2.2 Success Criterion 2.5.7 (Dragging Movements - Level AA) requires that all dragging operations offer a single-pointer and keyboard alternative.

Understanding WCAG 2.5.7 Dragging Movements

Under WCAG 2.5.7, any functionality that requires dragging an element from one point to another must be achievable by a single pointer without dragging (e.g. clicking a button to reorder or select a destination from a dropdown menu).

The Keyboard Movement Pattern (Space to Lift, Arrows to Move)

The accessible keyboard interaction standard for sortable lists and Kanban cards operates as follows:

Key Interaction State Action Performed
Space / Enter Card Focused Lifts the card (sets `aria-grabbed="true"` and grabs focus)
Up / Down Arrows Card Lifted Moves card up or down within the current column
Left / Right Arrows Card Lifted Moves card into adjacent Kanban columns (e.g., 'In Progress' to 'Done')
Space / Enter Card Moving Drops the card into new position and confirms placement
Escape Card Moving Cancels movement and restores card to original position

Live Region Status Updates for Position Changes

Whenever a card position changes via keyboard, an `aria-live="polite"` region must announce:

"Lifted task: Update SSL Certificates. Current position: In Progress, item 2 of 4. Use arrow keys to reorder, Space to drop."

Menu-Based Spatial Alternatives: 'Move to Column'

Alongside keyboard arrow controls, provide an explicit action button on each card opening a dropdown menu with explicit choices: Move Up, Move Down, Move to In Progress, Move to Done.

Accessible Kanban Card Implementation

<div 
  class="kanban-card" 
  tabindex="0" 
  role="button" 
  aria-describedby="card-instructions" 
  aria-label="Bug Fix: Checkout modal accessibility">
  <h4>Bug Fix: Checkout modal accessibility</h4>
  <div class="card-actions">
    <button type="button" class="btn-move" aria-haspopup="menu" aria-label="Move card">⋮</button>
  </div>
</div>
<span id="card-instructions" class="sr-only">
  Press Space to lift, arrow keys to move, Space to drop, Escape to cancel.
</span>

Audit Your Website for WCAG 2.2 Compliance Today

Scan your domain in 60 seconds with Rogabot and get instant PR-ready code diffs to prevent ADA lawsuit exposure.

View Pricing Plans