Я разработал меню Mac Style Doc. Меню doc будет отображаться, когда курсор составляет 100 пикселей снизу. Иначе меню скрыто. Теперь проблема в том, что я могу взять e.clientX и e.clientY только тогда, когда курсор неподвижен.
Есть ли способ решить это? Ниже приведен код, который я использовал для анимации.
$(window).mousemove(function (e) {
if ((window.innerHeight - e.clientY) <= 50) {
$('.wrap').stop(true);
$('.wrap').animate({
bottom: 5
}, 1000);
} else {
$('.wrap').stop(true);
$('.wrap').animate({
bottom: -100
}, 1000);
}
});
Спасибо за все ваши предложения.
Потратив часы на этот вопрос, просто подумал, что я должен поделиться решением, которое найдено. Вместо того, чтобы использовать JQuery, я использовал прослушиватель событий JavaScript на плоскости и добавил функцию обратного вызова, когда условие согласовано.
Простой пример того, как добавить событие lister. Если кому-то нужен весь код, пожалуйста, дайте мне знать, я тоже добавлю.
var myListener = function (e) {
document.body.innerHTML = 'Mouse first moved: ' + e.clientY +"---"+e.clientX
};
document.addEventListener('mousemove', myListener, false);
Ссылка на скрипку
http://jsfiddle.net/JQBmA/#&togetherjs=wUsP1yGylU
С Уважением,
Чтобы упростить работу, вы можете немного задержать событие, например:
var moveTimer = null;
$(window).on('mousemove', function (e) {
clearTimeout(moveTimer);
moveTimer = setTimeout(function () {
// only runs when the user stops moving the mouse for 10ms
}, 10);
});
$(window).mousemove()
обычно вызывает большую проблему с производительностью, вы должны найти другую логику, не используя ее