awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
desandro avatar

desandro/draggabilly

0
View on GitHub↗
3,871 stars·380 forks·JavaScript·MIT·11 viewsdraggabilly.desandro.com↗

Draggabilly

Draggabilly is a JavaScript drag and drop library used to make DOM elements draggable on desktop and mobile. It serves as a coordinate-based UI tool and interaction library for tracking and setting the horizontal and vertical positions of interface elements during user interaction.

The library provides a mobile-ready touch handler that converts mouse and touch movements into element translation. It includes specialized capabilities for restricting movement to specific axes or container boundaries and implements grid snapping to align elements to a predefined pixel grid.

The tool manages the drag lifecycle through event listeners that distinguish static clicks from drag gestures and supports the use of specific drag handles to restrict interaction triggers. It also provides utilities for programmatically controlling draggable instances, including the ability to enable, disable, or retrieve the exact coordinates of an element.

Features

  • Touch and Drag Interactions - Implements a mobile-ready touch handler that converts touch and mouse movements into smooth element translation.
  • Interactive Element Dragging - Enables users to move general UI elements across a screen via mouse drag or touch slide.
  • Drag and Drop Libraries - Provides a JavaScript library for making DOM elements draggable on both desktop and mobile devices.
  • Element Positioning - Provides utilities for setting and retrieving the exact horizontal and vertical coordinates of draggable elements.
  • Movement Constraints - Restricts the movement of draggable objects to a single axis or within container boundaries.
  • Mobile Touch Handlers - Processes touch events from mobile devices to enable smooth element translation across screen sizes.
  • Interaction Coordinate Utilities - Tracks and sets the horizontal and vertical positions of interface elements during user interaction.
  • Interactive UI Components - Provides tools for creating interactive web elements that can be moved freely via pointer gestures.
  • Movement Boundary Constraints - Implements logic to clamp the position of UI elements within specified boundary dimensions.
  • Pointer Offset Tracking - Calculates element displacement based on the delta between initial and current pointer positions.
  • DOM Interactivity Libraries - Provides a set of tools for managing pointer events and movement constraints for HTML elements.
  • Grid Alignment Systems - Snaps UI elements to predefined pixel grids to ensure consistent and precise alignment.
  • Pointer State Tracking - Updates internal coordinates and triggers callbacks by listening to pointer down, move, and up browser events.
  • Drag-Click Differentiation - Distinguishes between a static click and the start of a drag operation using distance thresholds.
  • Click-Drag Differentiation - Implements logic to distinguish between a static click and the start of a drag operation using temporal delays.
  • Movement Constraints - Restricts movement to a specific axis or clamps elements within the boundaries of a container element.
  • Drag Event Callbacks - Provides configuration hooks to trigger events and apply styles during the press, move, and release phases.
  • Drag Handles - Supports the definition of specific UI elements to initiate movement for a target object.
  • Drag State Monitors - Tracks the drag lifecycle state and element coordinates to run custom logic at specific interaction points.
  • DOM Event Listeners - Attaches listeners to interface elements to execute custom logic during press, move, and release events.
  • Grid Snapping - Aligns element position to a configurable pixel grid increment during movement.

Star history

Star history chart for desandro/draggabillyStar history chart for desandro/draggabilly

How this analysis was created: This summary and feature list are AI-generated from collected project material and can contain mistakes. Stars, license and language are imported from GitHub. Inclusion does not mean that we have tested or audited this project. Check the source documentation for any feature you depend on. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Projects sharing features with Draggabilly

These projects share indexed features with Draggabilly. Shared tags can include platform or build tooling; verify the primary use case before treating a result as a replacement.
  • react-grid-layout/react-draggablereact-grid-layout avatar

    react-grid-layout/react-draggable

    9,292View on GitHub↗

    react-draggable is a drag and drop library and coordinate-based position manager for React. It functions as a component wrapper that adds draggable behavior to user interface elements, enabling them to be moved via mouse or touch interactions. The library provides touch-enabled interaction tools that unify pointer events across desktop browsers and touch screen devices. It utilizes CSS transforms to handle element movement and coordinate tracking. The system covers movement constraints such as axis restriction and boundary clamping to confine elements within specific areas. It includes posit

    JavaScript
    View on GitHub↗9,292
  • mzabriskie/react-draggablemzabriskie avatar

    mzabriskie/react-draggable

    9,289View on GitHub↗

    react-draggable is a UI interaction library that provides core primitives and components for adding tactile movement and coordinate-based positioning to web elements. It serves as a tool for making user interface elements movable via mouse or touch interactions within React applications. The library supports the implementation of custom drag handles, allowing the initiation of movement to be restricted to specific child elements identified by CSS selectors. It also provides programmatic drag state management, enabling developers to control element positioning or use callbacks for movement wit

    JavaScript
    View on GitHub↗9,289
  • taye/interact.jstaye avatar

    taye/interact.js

    12,913View on GitHub↗

    interact.js is a JavaScript interaction library used to implement drag and drop, resizing, and multi-touch gestures within web browsers. It provides a specialized interaction framework for scalable vector graphics, allowing these elements to be moved and resized. The library features a multi-touch gesture engine that recognizes complex patterns such as pinch and rotate, and a coordinate snapping engine for aligning elements to grids or restricting movement within boundaries. It also includes a cross-frame state synchronizer to share interaction states and input events across multiple browser

    TypeScript
    View on GitHub↗12,913
  • bevacqua/dragulabevacqua avatar

    bevacqua/dragula

    22,160View on GitHub↗

    Dragula is a JavaScript drag and drop library and DOM element manipulator used to move and reorder HTML elements between multiple containers. It functions as a UI interaction framework and event manager that tracks drag lifecycles to facilitate the movement of elements within a web browser interface. The library distinguishes itself through configurable constraint validation, allowing developers to define which elements are draggable and which containers are permitted drop targets. It supports specialized interaction patterns such as element cloning, the use of specific drag handles to restri

    JavaScriptcomponentdrag-and-dropdrag-drop
    View on GitHub↗22,160
Compare all 30 related projects→

Frequently asked questions

What does desandro/draggabilly do?

Draggabilly is a JavaScript drag and drop library used to make DOM elements draggable on desktop and mobile. It serves as a coordinate-based UI tool and interaction library for tracking and setting the horizontal and vertical positions of interface elements during user interaction.

What are the main features of desandro/draggabilly?

The main features of desandro/draggabilly are: Touch and Drag Interactions, Interactive Element Dragging, Drag and Drop Libraries, Element Positioning, Movement Constraints, Mobile Touch Handlers, Interaction Coordinate Utilities, Interactive UI Components.

Which projects share features with desandro/draggabilly?

Projects with overlapping indexed features include: react-grid-layout/react-draggable — react-draggable is a drag and drop library and coordinate-based position manager for React. It functions as a… mzabriskie/react-draggable — react-draggable is a UI interaction library that provides core primitives and components for adding tactile movement… taye/interact.js — interact.js is a JavaScript interaction library used to implement drag and drop, resizing, and multi-touch gestures… bevacqua/dragula — Dragula is a JavaScript drag and drop library and DOM element manipulator used to move and reorder HTML elements… shopify/draggable — Draggable is a JavaScript library for implementing draggable elements and sortable lists within a web browser. It… gaearon/react-dnd — React-dnd is a drag and drop framework and library for React applications. It provides a system of higher-order…