Skip to content
easeweb
Search topics

Drag-and-drop boards that only a mouse can use

Cards move between columns only by dragging, have no focusable control, and the move is never announced.

WCAG 2.2
SC 2.1.1ASC 2.5.7AA· new in 2.2SC 4.1.3AA· new in 2.1
Required by
Section 508 · EN 301 549 (EU)
Broken <li draggable="true">
The accessibility problem illustrated: Only a drag moves it.
01

The problem

People who can't drag, or can't see where they are dropping, can't move a card at all.

02

Try it

Drag “Write release notes” to Done. Then put the mouse aside and try it with Tab.

The panel shows what a screen reader announces. Can you move the card without dragging, and do you hear where it went?

Broken Can you fix this?

To do

  • Write release notes
  • Update the pricing page

Doing

  • Fix the footer links

Done

Screen reader says:

(Tab to a card, or drag one)

A recreated demo. The broken version is intentionally inaccessible.

03

The fix

Keep the drag, add a control that moves each card with a click or a key, and say where it went.

  1. 1Every card moves to every column with single clicks or taps, no dragging.
  2. 2The same control works from the keyboard, and focus stays with the card after it moves.
  3. 3A status region that is already on the page says which card moved and where.
Before Cards that move only by dragging
<section class="column" data-column="todo">  <h2>To do</h2>  <ul>    <li draggable="true" data-card="notes">Write release notes</li>    <li draggable="true" data-card="pricing">Update the pricing page</li>  </ul></section><!-- Doing and Done are the same: a heading over a list of cards -->
After

Move buttons on each card

<li data-card="notes" draggable="true">  <span id="card-notes">Write release notes</span>  <button type="button" data-to="doing" aria-describedby="card-notes">Move to Doing</button>  <button type="button" data-to="done" aria-describedby="card-notes">Move to Done</button></li>…<p role="status" class="board-status"></p>

Fixing this with an AI coding assistant? Get this guide as Markdown

04

Verify the fix

5 checks.

Test with: Keyboard, Mouse, Touch, Screen reader

0 of 5 checked

Record the OS, browser and assistive-technology versions, the build, the date, and the actual result of each step. Repeat after the board component or its drag library changes.

Limits

This is a starting pattern, not a guarantee for every application. Reordering cards within a column, nested boards and moves that need confirmation have their own needs, and are not covered here. Drag libraries differ in how they handle focus and announcements: test the complete journey with your target assistive technology.

This is a recreated teaching example, not a finding about a named client. The code is a starting pattern: test it in your own product. No completed assistive-technology test is claimed here.

Keep this fixed as your code changes.

Turn guides like this into rules your coding agents and CI follow, then have the result retested with a keyboard and screen readers.

How retests work