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.