Wie kann ich jQuery verwenden, um den Cursor mit einem DIV zu folgen?jQuery - Folgen Sie dem Cursor mit einem DIV
69
A
Antwort
122
Sie können dem Cursor nicht mit DIV
folgen, aber Sie können einen DIV
zeichnen, wenn Sie den Cursor bewegen!
$(document).on('mousemove', function(e){
$('#your_div_id').css({
left: e.pageX,
top: e.pageY
});
});
Das div aus dem Schwimmer sein muss, sollte so position: absolute
eingestellt werden.
12
Das funktioniert für mich. Hat eine schöne verzögerte Aktion.
var $mouseX = 0, $mouseY = 0;
var $xp = 0, $yp =0;
$(document).mousemove(function(e){
$mouseX = e.pageX;
$mouseY = e.pageY;
});
var $loop = setInterval(function(){
// change 12 to alter damping higher is slower
$xp += (($mouseX - $xp)/12);
$yp += (($mouseY - $yp)/12);
$("#moving_div").css({left:$xp +'px', top:$yp +'px'});
}, 30);
Nizza und simples
+2
Seine Antwort ist etwas neues, eine dämpfende Wirkung – Jonah
13
Sie benötigen jQuery nicht dafür. Hier ist ein einfaches Ausführungsbeispiel:
<!DOCTYPE html>
<html>
<head>
<title>box-shadow-experiment</title>
<style type="text/css">
#box-shadow-div{
position: fixed;
width: 1px;
height: 1px;
border-radius: 100%;
background-color:black;
box-shadow: 0 0 10px 10px black;
top: 49%;
left: 48.85%;
}
</style>
<script type="text/javascript">
window.onload = function(){
var bsDiv = document.getElementById("box-shadow-div");
var x, y;
// On mousemove use event.clientX and event.clientY to set the location of the div to the location of the cursor:
window.addEventListener('mousemove', function(event){
x = event.clientX;
y = event.clientY;
if (typeof x !== 'undefined'){
bsDiv.style.left = x + "px";
bsDiv.style.top = y + "px";
}
}, false);
}
</script>
</head>
<body>
<div id="box-shadow-div"></div>
</body>
</html>
Ich wählte position: fixed;
so würde Scrollen kein Problem sein.
+1 und demo http://jsfiddle.net/hj57k/ – Reigel
@Reigel - deine Demo ist besser als [meine] (http://jsfiddle.net/SnJ92/) :) – sje397
Ich hatte ein paar Probleme mit bekommen das funktioniert richtig. Die Verwendung einer reinen jQuery-Lösung anstelle von '.css()' endete für mich. Verwenden Sie stattdessen die folgende Zeile: '$ ('# your_div_id'). Offset ({left: e.page, top: e.pageY});' – Brad