2015-09-10 2 views
0

У меня есть Div, который перемещается курсором мыши. В DIV у меня есть 2 ссылки, и я тоже хочу на них нажимать, но Div является подвижным, он перемещается с помощью мыши, поэтому, когда я хочу щелкнуть ссылку (в этом div), DIV перемещается далеко от курсора.Переместить div с мышью и его содержимым?

Мой КОД:

<div class="myDiv"> 
    Click to View<br> 
    <a href="#linkA">Link A</a><br> 
    <a href="#linkB">Link B</a> 
</div> 

$(document).bind('mousemove', function(e){ 
    $('.myDiv').css({ 
    left: e.pageX + 50, 
    top: e.pageY 
    }); 
}); 

http://jsfiddle.net/hbd/zo0csLx5/

+2

какое поведение вы действительно хотите? – nersoh

+0

, когда курсор мыши перемещается в направлении DIV, поведение «mousemove» останавливается. Необходимо определить область вокруг DIV, поэтому, когда курсор находится на этой области, перемещение движений останавливается, и курсор вводится в этот div и нажимает на ссылки. После выхода из этой области DIV должен снова перемещаться с помощью курсора. – Sohaib

+0

Что-то вроде этого? http://jsfiddle.net/zo0csLx5/1/ – sinisake

ответ

2

Извините за мой вид нечитаемый кода, но это может дать вам идею.

var cursorPos = { 
    x: 0, 
    y: 0, 
    offset: 50 
}; 

$(document).bind('mousemove', function(e){ 
    var myDiv = $(".myDiv"), 
     myDivData = { 
     width: myDiv.innerWidth(), 
     height: myDiv.innerHeight(), 
     posX: myDiv.offset().left, 
     posY: myDiv.offset().top, 
     }; 

    // Check if the cursor is out of a given area 
    if (!((e.pageX >= (myDivData.posX - cursorPos.offset) && e.pageX <= (myDivData.posX + myDivData.width + cursorPos.offset)) && 
      (e.pageY >= (myDivData.posY - cursorPos.offset) && e.pageY <= (myDivData.posY + myDivData.height + cursorPos.offset))) 
     ) { 

     // Check if it moved horizontally 
     if (e.pageX > (myDivData.posX + myDivData.width)) { 
      myDiv.css({ 
       left: (e.pageX - myDivData.width - cursorPos.offset), 
      }); 
     } 
     else if (e.pageX < myDivData.posX) 
      myDiv.css({ 
       left: e.pageX + cursorPos.offset, 
      }); 

     // Check if it moved vertically 
     if (e.pageY > (myDivData.posY + myDivData.height)) 
      myDiv.css({ 
       top: (e.pageY - myDivData.height - cursorPos.offset) 
      }); 
     else if (e.pageY < myDivData.posY) 
      myDiv.css({ 
       top: e.pageY + cursorPos.offset 
      }); 

    } 
    cursorPos.x = e.pageX; 
    cursorPos.y = e.pageY; 
}); 

Проверить это demo

+0

отлично! спасибо за помощь @nersoh :) – Sohaib

+0

приветствую :) – nersoh

+0

привет @nersoh, сэр, пожалуйста, взгляните на мою демонстрацию [http://jsfiddle.net/hbd/jfPZH/449/](http://jsfiddle .net/hbd/jfPZH/449 /), я хочу добавить в него эффект перехода или гладкости. – Sohaib

Смежные вопросы