jQuery-DIV로 커서 따라 가기


답변:


140

으로 커서를 따라갈 수 없지만 커서를 움직일 때 DIVa를 그릴 수 있습니다 DIV!

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

그 div는 float에서 떨어져 position: absolute있어야하므로 설정해야합니다.


11
제대로 작동하는 데 문제가있었습니다. .css()나를 위해 일하는 대신 순수한 jQuery 솔루션을 사용했습니다 . 함수 내에서 대신 다음 줄을 사용하십시오. $('#your_div_id').offset({left: e.page, top: e.pageY});
Brad

1
멋진 데모 @Reigel! 수평선을 표시하도록 약간 수정했습니다 ( jsfiddle.net/rg8S8 ). 사람들이 플롯을 읽는 데 도움이되도록이 기능을 사용할 계획입니다. "시선"값보다 훨씬 잘 작동합니다.
Tim Swast

2
@jAndy div가 부모 div에있을 때 이것을 할 수 있습니까? 그래서 사용자가 부모 / 컨테이너 div로 마우스를 움직일 때 ... 자식 div가 컨테이너 내에서 이동합니까?
MonteCristo 2012

이 솔루션은 끔찍합니다! 우선 jQuery를 사용하지만 두 번째로 상단과 왼쪽을 설정하는 것은 다시 칠하기 때문에 매우 비효율적입니다. Google과 다른 사람들은 모두 transform : translate를 사용할 것을 권장합니다. 이는 기존 GPU 버퍼에서 다시 그리기 및 그리기를 유발하지 않기 때문입니다. 이 대답은 9 살이라는 것을 알고 있지만 적어도 편집 하십시오. 자세한 내용은 html5rocks.com/en/tutorials/speed/high-performance-animations
DavidsKanal

19

이를 위해 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;스크롤이 문제가되지 않도록 선택했습니다 .


16

이것은 나를 위해 작동합니다. 좋은 지연된 행동이 진행되고 있습니다.

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

멋지고 단순한


2
그의 대답은 새롭고 댐핑 효과를 제공하는 것입니다
Jonah
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.