Back to Dictionary
Action Feedback
●●○Customize
Advanced

Drag & Drop Ghost

Use Drag & Drop Ghost when the user is rearranging real items; use Hover Lift when you only need to show clickability.

Use

Showing that an item is actively being moved while preserving its original list position and drop target.

Avoid

Avoid it when the item is only clickable, when order cannot change, or when the dragged preview would cover critical nearby data.

Safer Alternative

Swipe Gesture Hint

Risk Level

High attention

Timing

120-180ms lift on drag start, direct pointer tracking while dragging, 160-240ms settle on drop.

Easing

Use a stiff spring for lift/drop and no delayed easing for pointer tracking.

Risk

accessibility sensitiveperformance sensitive

Live Demo

What It Is

When dragging an item, the original item remains lowered in opacity as a placeholder while a slightly scaled-up, shadowed ghost follows the pointer.

Decision Guidance

Use Drag & Drop Ghost when the user is rearranging real items; use Hover Lift when you only need to show clickability.

Best For

Showing that an item is actively being moved while preserving its original list position and drop target.

Avoid When

Avoid it when the item is only clickable, when order cannot change, or when the dragged preview would cover critical nearby data.

Timing

120-180ms lift on drag start, direct pointer tracking while dragging, 160-240ms settle on drop.

Easing

Use a stiff spring for lift/drop and no delayed easing for pointer tracking.

Risk Tags

accessibility sensitiveperformance sensitive

When to Use

  • Kanban boards and task lanes
  • Reorderable lists
  • File upload queues or asset managers

When NOT to Use

  • Non-draggable items
  • Static lists where users cannot change order
  • Dense tables where the ghost would hide nearby rows

Configuration Tips

  • 01Keep the source slot visible with a dashed placeholder or 30-50% opacity
  • 02Scale the dragged ghost only to 1.02-1.06 so it feels lifted without changing hit expectations
  • 03Use a stronger shadow while dragging, then return quickly on drop
  • 04Pair with keyboard reorder controls for accessibility

You've Seen It In

LinearNotionTrello

AI Implementation Prompts

Move from a fast scaffold to production details, then tune timing and edge states.

Create a reorderable task list item that lifts into a shadowed drag ghost while the original slot remains visible as a dashed placeholder. On release, settle the item back into the list quickly.

Code Example (Tailwind CSS)

A focused implementation sketch you can adapt to your product state.

'use client';
import { motion } from 'framer-motion';
import { GripVertical } from 'lucide-react';

export function DragDropGhost({ isDragging = false }: { isDragging?: boolean }) {
  return (
    <div className="w-full max-w-sm space-y-3">
      <div className="rounded-xl border border-stone-200 bg-white p-4 shadow-sm">
        Review roadmap
      </div>

      <div className="relative h-14">
        <div className="absolute inset-0 rounded-xl border-2 border-dashed border-stone-200 bg-stone-50 opacity-60" />
        <motion.div
          animate={
            isDragging
              ? { y: -18, x: 8, scale: 1.04, boxShadow: '0 18px 32px rgba(15,23,42,.16)' }
              : { y: 0, x: 0, scale: 1, boxShadow: '0 1px 2px rgba(15,23,42,.08)' }
          }
          transition={{ type: 'spring', stiffness: 420, damping: 30 }}
          className="absolute inset-x-0 flex cursor-grab items-center gap-3 rounded-xl border border-stone-200 bg-white p-4"
        >
          <GripVertical className="h-4 w-4 text-stone-400" aria-hidden />
          <span className="text-sm font-medium text-stone-800">Update pricing copy</span>
        </motion.div>
      </div>
    </div>
  );
}