jQuery - 用 DIV 跟随光标

Posted

技术标签:

【中文标题】jQuery - 用 DIV 跟随光标【英文标题】:jQuery - Follow the cursor with a DIV 【发布时间】:2011-03-24 02:11:21 【问题描述】:

如何使用 jQuery 跟随 DIV 的光标?

【问题讨论】:

【参考方案1】:

你不需要 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>

我选择了position: fixed;,所以滚动不会成为问题。

【讨论】:

【参考方案2】:

这对我有用。正在进行一个不错的延迟操作。

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);

简单明了

【讨论】:

他的答案是提供一些新的东西,一种阻尼效果【参考方案3】:

DIV不能跟随光标,但是移动光标时可以画DIV

$(document).on('mousemove', function(e)
    $('#your_div_id').css(
       left:  e.pageX,
       top:   e.pageY
    );
);

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

【讨论】:

我无法正常工作。使用纯 jQuery 解决方案而不是 .css() 最终为我工作。在函数内部,改用这一行:$('#your_div_id').offset(left: e.page, top: e.pageY); 不错的演示 @Reigel !我对其进行了一些修改以显示一条水平线(jsfiddle.net/rg8S8)。我打算用它来帮助人们阅读图表(它们是 png 图像,所以我无法自动将值显示为文本)。它应该比“目测”值更好。 @jAndy 当 div 在父 div 中时是否可以这样做?那么当用户使用父/容器 div 移动鼠标时......子 div 在容器内移动? 这个解决方案太可怕了!首先,它使用 jQuery,但其次,设置 top 和 left 效率非常低,因为它们会导致重绘。谷歌和其他人都推荐使用 transform: translate,因为它不会导致重绘和从现有的 GPU 缓冲区中绘制。我知道这个答案已有 9 年历史,但至少 EDIT 它。更多信息在这里:html5rocks.com/en/tutorials/speed/high-performance-animations

以上是关于jQuery - 用 DIV 跟随光标的主要内容,如果未能解决你的问题,请参考以下文章

如何让div跟随jQuery顺利滚动?

jquery日历插件问题

各位帅哥,jQuery怎么获取可编辑div的光标的位置或者索引? 急急急 。。。。

jquery在contenteditable div中设置光标位置

jQuery获取textarea光标/插入符号X,Y位置并在下面显示一个DIV

悬停时跟随指针的 Div