interact.js — это JavaScript‑библиотека для реализации интерактивных пользовательских интерфейсов в современных браузерах. Она предоставляет набор средств для обработки drag‑and‑drop, изменения размеров элементов и мультитач‑жестов, объединяя события мыши, касания и указателя в единый поток данных. Библиотека ориентирована на веб‑разработчиков и применяется как в простых интерфейсах перетаскивания, так и в сложных приложениях с динамической компоновкой и манипуляцией элементами на странице.
Разработка interact.js была направлена на обеспечение кроссбраузерной совместимости и удобства настройки поведения взаимодействий. Библиотека предлагает унифицированные объекты события с информацией об указателе, смещениях и целевом элементе, а также модульную систему модификаторов для точного контроля над поведением: привязка к сетке (snap), ограничение области перемещения (restrict), имитация инерции (inertia) и другие. В документации и примерах обычно показаны сценарии использования для перетаскивания, изменения размеров и управления сложными жестами при помощи простых конфигураций.
- Унифицированные события указателя: объединение данных с мыши, касания и Pointer Events в единый интерфейс событий с координатами, скоростью и направлением.
 - Drag‑and‑drop: поддержка перетаскивания элементов с обработкой начала, движения и завершения, включая отмену и возврат.
 - Изменение размера (resize): гибкая настройка управления размерами элементов с ограничениями минимальных и максимальных размеров.
 - Мультитач‑жесты: распознавание простых жестов с несколькими указателями для масштабирования и поворота.
 - Модификаторы поведения: snap для привязки к точкам или сетке, restrict для ограничения области, inertia для плавного продолжения движения после отпускания.
 - Высокая настраиваемость: возможность подключать обработчики событий, настраивать параметры модификаторов и комбинировать режимы взаимодействия.
 - Кроссбраузерность: работа в современных браузерах с учетом различий в обработке указателей и касаний.
 - Производительность: оптимизации для плавной отрисовки при интерактивных перемещениях и минимизации нагрузки на основной поток выполнения.