jQuery - 用DIV跟随光标

Pet*_*ter 76 html jquery cursor

如何使用jQuery跟踪光标与DIV?

jAn*_*ndy 137

你不能用a跟随光标DIV,但是你可以DIV在移动光标时画一个!

$(document).on('mousemove', function(e){
    $('#your_div_id').css({
       left:  e.pageX,
       top:   e.pageY
    });
});
Run Code Online (Sandbox Code Playgroud)

那个div必须脱离浮动,所以position: absolute应该设置.

  • 让我正常工作时遇到了一些麻烦.使用纯jQuery解决方案而不是`.css()`最终为我工作.在函数内部,改为使用这一行:`$('#your_div_id').offset({left:e.page,top:e.pageY});` (9认同)
  • @jAndy可以在div处于父div中时执行此操作吗?所以当用户使用父/容器div移动鼠标时......子div在容器内移动? (2认同)

hai*_*pie 15

你不需要jQuery.这是一个简单的工作示例:

<!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>
Run Code Online (Sandbox Code Playgroud)

我选择position: fixed;滚动不会是一个问题.


小智 14

这适合我.有一个很好的延迟行动.

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);
Run Code Online (Sandbox Code Playgroud)

很好,很简单

  • 他的答案是提供新的东西,一种减震效果 (2认同)