Zepto.js предоставляет упрощённый, но мощный интерфейс для работы с событиями DOM, включая события мыши. Основная цель — обработка действий пользователя, таких как клики, наведение и перемещение курсора, с минимальным количеством кода.
Zepto использует метод .on() для привязки обработчиков
событий и .off() для их удаления. События мыши
включают:
click — срабатывает при клике на элементе.dblclick — двойной клик.mousedown — нажатие кнопки мыши.mouseup — отпускание кнопки мыши.mousemove — перемещение курсора по элементу.mouseenter — курсор вошёл в границы элемента.mouseleave — курсор покинул границы элемента.Примеры базового использования:
$('#button').on('click', function(event) {
console.log('Кнопка нажата');
});
$('#box').on('mouseenter', function() {
$(this).css('background-color', 'lightblue');
});
$('#box').on('mouseleave', function() {
$(this).css('background-color', '');
});
Ключевой момент: Zepto автоматически нормализует
объект события, предоставляя кросс-браузерный доступ к свойствам события
через объект event.
Объект события в Zepto расширяет стандартный объект браузера, добавляя удобные свойства:
event.type — тип события (click,
mousemove и т.д.).event.target — элемент, на котором произошло
событие.event.currentTarget — элемент, на котором привязан
обработчик.event.pageX и event.pageY — координаты
курсора относительно документа.event.preventDefault() — предотвращает стандартное
поведение элемента.event.stopPropagation() — останавливает всплытие
события.Пример:
$('#canvas').on('mousemove', function(event) {
console.log('Координаты курсора:', event.pageX, event.pageY);
});
Zepto поддерживает делегирование, что позволяет назначать обработчики на родительские элементы и реагировать на события дочерних. Это эффективно при динамически создаваемых элементах.
$('#list').on('click', 'li', function() {
console.log('Нажат элемент списка:', $(this).text());
});
Особенность: делегирование уменьшает количество обработчиков и улучшает производительность при большом количестве элементов.
Метод .one() позволяет привязать обработчик, который
сработает только один раз:
$('#button').one('click', function() {
alert('Клик выполнен один раз');
});
Часто требуется получать точное положение курсора относительно элемента или документа. Zepto предоставляет свойства:
event.pageX, event.pageY — координаты
относительно документа.event.clientX, event.clientY — координаты
относительно видимой области окна.$('#box').on('mousemove', function(event) {
var offset = $(this).offset();
var x = event.pageX - offset.left;
var y = event.pageY - offset.top;
console.log('Позиция относительно элемента:', x, y);
});
Zepto не имеет встроенной поддержки drag-and-drop, но комбинация
событий mousedown, mousemove и
mouseup позволяет реализовать перетаскивание:
var isDragging = false;
$('#draggable').on('mousedown', function(event) {
isDragging = true;
});
$(document).on('mousemove', function(event) {
if (isDragging) {
$('#draggable').css({
left: event.pageX + 'px',
top: event.pageY + 'px'
});
}
});
$(document).on('mouseup', function() {
isDragging = false;
});
Совет: закреплять обработчик mousemove
на документе, чтобы движение мыши отслеживалось даже за пределами
элемента.
Для отслеживания прокрутки с помощью колесика можно использовать
событие wheel:
$('#container').on('wheel', function(event) {
console.log('Дельта прокрутки:', event.originalEvent.deltaY);
event.preventDefault();
});
Примечание: Zepto сохраняет ссылку на исходное
событие в event.originalEvent.
Zepto имеет короткие методы для популярных событий мыши:
.click(handler) ≈
.on('click', handler).mouseenter(handler) ≈
.on('mouseenter', handler).mouseleave(handler) ≈
.on('mouseleave', handler)Пример:
$('#button').click(function() {
console.log('Кнопка нажата (псевдоним)');
});
.on() и .off() поддерживают
несколько типов событий через пробел.event унифицирован, что минимизирует различия
между браузерами.$('#box').on('mousedown mouseup', function(event) {
console.log('Событие:', event.type);
});
События мыши в Zepto позволяют создавать:
Эта гибкость достигается за счёт компактного синтаксиса и нормализации событий, что делает Zepto удобным инструментом для динамических интерфейсов.