Sunday, May 19, 2024
 Popular · Latest · Hot · Upcoming
152
rated 0 times [  155] [ 3]  / answers: 1 / hits: 22826  / 14 Years ago, mon, january 31, 2011, 12:00:00

OK, this works perfectly fine for following my mouse.



//
$(document).mousemove(function(e){
$(#follower).css({
'top': e.pageY + 'px';
'left': e.pageX + 'px';
});
});
//


And this works great for animating the mouse to a clicked point



//
$(document).click(function(e){
$(#follower).animate({
top: e.pageY + 'px';
left: e.pageX + 'px';
}, 800);
});
//


But I personally feel that logically this SHOULD work! Coming from my point of view as the webscripter. Amd then my question is, how can I make this work. I want the #follower to try and follow my mouse with a dynamic kind of lagging behind feel.



//
$(document).mousemove(function(e){
$(#follower).animate({
top: e.pageY + 'px';
left: e.pageX + 'px';
}, 800);
});
//

More From » jquery

 Answers
88

How about using setInterval and an equation called zeno's paradox:



http://jsfiddle.net/88526/1/



That's the way I usually do it.



As requested, I've included the code in this answer. Given a div with absolute positioning:



CSS:



#follower{
position : absolute;
background-color : red;
color : white;
padding : 10px;
}


HTML:



<div id=follower>Move your mouse</div>


JS w/jQuery:



var mouseX = 0, mouseY = 0;
$(document).mousemove(function(e){
mouseX = e.pageX;
mouseY = e.pageY;
});

// cache the selector
var follower = $(#follower);
var xp = 0, yp = 0;
var loop = setInterval(function(){
// change 12 to alter damping, higher is slower
xp += (mouseX - xp) / 12;
yp += (mouseY - yp) / 12;
follower.css({left:xp, top:yp});

}, 30);

[#93979] Friday, January 28, 2011, 14 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
harleyterryp

Total Points: 290
Total Questions: 92
Total Answers: 95

Location: Montenegro
Member since Sun, May 7, 2023
1 Year ago
;