Hold в Interact.js относится к событию, которое срабатывает, когда пользователь удерживает элемент в течение определённого времени. Этот механизм позволяет реализовать такие функции, как длинное нажатие для вызова контекстного меню, начало перетаскивания или активация специальных действий без мгновенного срабатывания клика.
Interact.js предоставляет возможность конфигурировать длительность удержания и связывать его с конкретными элементами. Ключевые параметры:
Пример базовой конфигурации:
interact('.draggable')
.draggable({
listeners: {
hold: function (event) {
console.log('Элемент удерживается');
},
holdend: function (event) {
console.log('Удержание завершено');
},
holdcancel: function (event) {
console.log('Удержание отменено');
}
},
holdDuration: 800
});
В отличие от стандартного события click, hold не срабатывает мгновенно при нажатии. Это позволяет:
Ключевой момент: hold требует отслеживания не только нажатия, но и продолжительности, что делает его более гибким инструментом для сложных интерактивных компонентов.
Hold часто используется в связке с другими функциями Interact.js:
Пример комбинации drag и hold:
interact('.draggable')
.draggable({
holdDuration: 500,
listeners: {
hold: function (event) {
event.target.classList.add('drag-ready');
},
move: function (event) {
if (event.interaction.pointerIsDown) {
event.target.style.transform = `translate(${event.dx}px, ${event.dy}px)`;
}
}
}
});
В этом примере элемент начинает двигаться только после того, как пользователь удерживает его полсекунды.
Hold отлично подходит для сенсорных интерфейсов, где длинное нажатие заменяет правый клик мыши. Interact.js автоматически различает:
Для точной настройки можно использовать holdDuration отдельно для touch и mouse событий:
interact('.button')
.on('hold', function (event) {
console.log('Долгое нажатие активировано');
})
.holdDuration(700);
Отмена hold важна для предотвращения конфликтов с другими событиями. Interact.js позволяет использовать holdcancel, который срабатывает если:
Пример:
interact('.draggable')
.draggable({
listeners: {
holdcancel: function (event) {
console.log('Удержание прервано, действие отменено');
}
},
holdDuration: 600
});
Hold полностью интегрируется с системой событий Interact.js:
pointerdown и pointerup используются для
отслеживания начала и конца удержания;interaction.start и interaction.stop
помогают контролировать пользовательское взаимодействие на более низком
уровне;Hold — мощный инструмент для создания длительных взаимодействий с элементами. Он повышает точность управления интерфейсом, снижает риск случайных действий и расширяет возможности сенсорного и десктопного взаимодействия. Использование hold вместе с drag и resize позволяет создавать динамичные, отзывчивые и удобные элементы управления.