Drag and drop is a term that refers to a user interface technique that allows for moving objects around on the screen by dragging them with a mouse from one place to another. When used in Web and mobile app software, drag-and-drop allows people to efficiently navigate a system with precision. In some well-known applications, as captured beneath, it is used to quickly select various types of objects or define relationships between two items. The target is where the object is dropped; it can be a location (such as a container) or another object. Dragging and dropping can be used to invoke many kinds of actions or create various types of associations between two abstract objects.
As a feature, drag-and-drop support is not found in all software, though it is sometimes a fast and easy-to-learn technique. However, it is not always clear to users that an item can be dragged and dropped, or what is the command performed by the drag and drop, which can decrease usability.
The basic sequence involved in drag and drop is:
Dragging requires more physical effort than moving the same pointing device without holding down any buttons. Because of this, a user cannot move as quickly and precisely while dragging (see Fitts' law). However, drag-and-drop operations have the advantage of thoughtfully chunking together two operands (the object to drag, and the drop location) into a single action. Extended dragging and dropping (as in graphic design) can stress the mousing hand.
A design problem appears when the same button selects and drags items. Imprecise movement can cause an attempt to select an object to register as a dragging motion.
Another problem is that the target of the dropping can be hidden under other objects. The user would have to stop the dragging, make both the source and the target visible, and start again. In classic Mac OS, the top-of-screen menu bar served as a universal "drag cancel" target. This issue has been dealt with in Mac OS X with the introduction of Exposé.