В библиотеке Interact.js каждое взаимодействие, будь то перетаскивание (drag), изменение размера (resize) или жест (gesture), генерирует объект события, содержащий исчерпывающую информацию о текущем состоянии действия. Этот объект позволяет контролировать поведение элемента, получать координаты, отслеживать скорость и направление движения, а также управлять стилями и ограничениями.
typeСвойство type указывает тип события. Значения могут
включать:
dragstart — начало перетаскиванияdragmove — перемещение элементаdragend — завершение перетаскиванияresizestart — начало изменения размераresizemove — изменение размера в процессеresizeend — завершение изменения размераgesturestart, gesturemove,
gestureend — события жестов (масштабирование, поворот)targettarget содержит DOM-элемент, к которому привязано
взаимодействие. Через него можно напрямую изменять стили, добавлять
классы или работать с данными элемента:
interact('.draggable').on('dragmove', function (event) {
event.target.style.transform =
`translate(${event.dx}px, ${event.dy}px)`;
});
dx и
dyЭти свойства отражают смещение элемента относительно предыдущего события. Они крайне полезны для плавного перемещения или анимации:
dx — смещение по оси Xdy — смещение по оси YДля накопленного перемещения используют event.pageX и
event.pageY:
let x = 0, y = 0;
interact('.draggable').on('dragmove', function (event) {
x += event.dx;
y += event.dy;
event.target.style.transform = `translate(${x}px, ${y}px)`;
});
rectrect содержит объект с текущими координатами и размерами
целевого элемента:
top, left, right,
bottom — позиции элемента относительно страницыwidth, height — размеры элементаИспользуется для вычисления ограничений движения или коллизий с другими элементами.
interactioninteraction хранит информацию о текущем
взаимодействии, включая все связанные события и состояние
перетаскивания или изменения размера. В нём можно получить доступ к
interactable и pointerId, что позволяет
отслеживать несколько одновременных касаний.
pointer и
pointerspointer — объект с координатами текущего касания или
мыши (clientX, clientY, pageX,
pageY)pointers — массив всех активных указателей для
мультикасания, содержащий те же координатыЭто особенно важно при обработке жестов и мультидотного взаимодействия.
delta и
velocitydelta — смещение от предыдущего события, аналогично
dx/dy, но для жестов и масштабированияvelocity — объект, содержащий скорость движения
(x и y в пикселях в секунду)Используется для плавной анимации, предсказания позиции или инерционных эффектов.
coordscoords включает все доступные координаты события:
page — координаты относительно документаclient — координаты относительно окна просмотраscreen — координаты относительно экранаПример применения при ограничении движения:
interact('.draggable').draggable({
listeners: {
move(event) {
let x = event.pageX;
let y = event.pageY;
if (x < 0) x = 0;
if (y < 0) y = 0;
event.target.style.transform = `translate(${x}px, ${y}px)`;
}
}
});
edges (для изменения размера)При работе с изменением размера edges содержит
информацию о том, какие грани элемента были затронуты:
top, left, bottom,
right — true, если соответствующая грань активнаrectDeltaПри масштабировании или изменении размера rectDelta
показывает разницу между начальным и текущим размером
элемента, включая смещение:
top, left, width,
heightinteraction.eventableСодержит ссылки на объект Interactable, через который инициировано событие. Позволяет получить параметры ограничений, инерции и допустимой области движения.
buttonsОтражает, какая кнопка мыши была задействована:
1 — левая2 — правая4 — средняяЭто важно при различении действий при клике правой кнопкой или комбинации с клавишами.
originalEventХранит исходное DOM-событие (MouseEvent,
TouchEvent, PointerEvent). Позволяет
использовать стандартные свойства, такие как ctrlKey,
shiftKey, altKey, для расширенного контроля
поведения.
immediatePropagationStoppedБулево значение, указывающее, был ли вызван метод
stopImmediatePropagation() для текущего события. Помогает
управлять конфликтами между несколькими обработчиками.
Каждое из перечисленных свойств объекта события Interac.js предоставляет полный контроль над интерактивными действиями. Их комбинирование позволяет реализовать сложные интерфейсы с точной настройкой перемещений, масштабирования, жестов и анимации элементов на странице.