Skip to content

Buttons For Move

DodaTech 3 min read

title: "Buttons for Move — Accessible Move Controls for Drag and Drop" description: "Learn how to design accessible move buttons with proper labels, focus management, and screen reader announcements for reorderable lists." weight: 4 date: 2026-06-28 lastmod: 2026-06-28 tags: [accessibility, drag-drop]


Move buttons (Move Up, Move Down, Move To) provide an accessible alternative to drag and drop with clear labels and predictable behavior.

## What You'll Learn

How to design accessible move button controls for reorderable lists and grids.

## Why It Matters

Move buttons are the most predictable and reliable alternative to drag and drop. They work with keyboard, screen reader, and switch devices.

## Real-World Use

A playlist editor shows songs with Move Up and Move Down buttons. A screen reader user tabs to the "Move Down" button on song 3, presses Enter, and the song moves to position 4. Focus stays on the song.

## Move Button Pattern

```html
<ol aria-label="Playlist" role="list">
  <li role="listitem" aria-label="Song 1: Bohemian Rhapsody">
    <button aria-label="Move Bohemian Rhapsody up"
            class="move-btn up"
            onclick="moveSong(0, -1)"
            ${index === 0 ? 'disabled' : ''}>
      <svg aria-hidden="true" focusable="false" width="16" height="16">...</svg>
    </button>
    <span class="item-label">Bohemian Rhapsody</span>
    <button aria-label="Move Bohemian Rhapsody down"
            class="move-btn down"
            onclick="moveSong(0, 1)"
            ${index === last ? 'disabled' : ''}>
      <svg aria-hidden="true" focusable="false" width="16" height="16">...</svg>
    </button>
  </li>
</ol>

Move To Dialog

<button aria-label="Move item to position" onclick="openMoveDialog(this)">
  Move to...
</button>

<div role="dialog" aria-labelledby="move-title" id="move-dialog" hidden>
  <h2 id="move-title">Move item to position</h2>
  <label for="position-select">Position</label>
  <select id="position-select">
    <option value="1">1 (top)</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4 (bottom)</option>
  </select>
  <button onclick="confirmMove()">Move</button>
  <button onclick="closeDialog()">Cancel</button>
</div>

Common Mistakes

1. Icon-only buttons without labels

Move buttons need aria-label describing the action and the item name.

2. Disabled buttons without explanation

Disabled Move Up at the top is expected. Disabled buttons still need accessible names.

3. Buttons not adjacent to items

Each item should have its own move buttons. Global move controls are confusing.

4. No keyboard shortcut for move

Offer keyboard shortcuts like Alt+Arrow keys for power users.

5. Move buttons not focusable when disabled

Disabled buttons should not be focusable. Use aria-disabled="true" if they remain focusable.

Practice Questions

1. What should the aria-label of a move button include? The action (move up/down) and the item name for context.

2. When should the Move Up button be disabled? When the item is at the first position in the list.

3. What is the advantage of a "Move to..." dialog over individual buttons? It lets users jump to an exact position instead of stepping through each position.

Challenge: Build a playlist with 10 songs. Each song has Move Up, Move Down, and Move To buttons. Implement all three.

FAQ

Should move buttons be visible or appear on hover?

Always visible. Hover-revealed controls are not keyboard accessible.

Can I use a select dropdown for positioning?

Yes. A 'Move to position' select is an effective alternative for long lists.

How do I handle drag and drop on touch devices?

Touch devices need larger move buttons or a long-press-to-drag pattern with proper ARIA.

What is the best icon for move buttons?

Up/down arrows are most recognizable. Use SVG with aria-hidden='true'.

Should I support drag and drop in addition to buttons?

Yes. Provide both for power users who prefer drag and users who need buttons.

Mini Project

Create a reorderable list with Move Up, Move Down, and Move To controls. Implement proper labeling, disable states, and focus management.

What's Next

Learn about Focus Manipulation during drag-and-drop and reorder operations.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro