2016-08-23 10 views
1

ウィンドウの荷重で計算されたオーバーフローしたdivを右または左に移動するには、ユーザーのマウスの位置によって異なります。 (マウスがまだそこにいる間、連続アニメーション)。私はいくつかのバグや問題があります。jQuery mouseover、trueのときに左または右にアニメ化

  1. マウスを止めずに方向を移動します。
  2. アニメーション機能を使用している場合、これは開始時に機能し、何度も繰り返し停止するとアニメーションが不良になります。

注:jquery以外のライブラリは使用しません。

$(window).load(function() { 
    var buildingsWrapper = $('#buildings'), 
     lastBuilding = $('.building:last'); 

    buildingsWrapper.width(parseInt(lastBuilding.css('left')) + lastBuilding.width()); 

    var followMouseMove = function() { 
     var animStarted = false; 

     // ok now, mouse over but this will work for just one time. 
     buildingsWrapper.on('mouseover', function(e) { 
      if(e.clientX >= $(window).width() - 100) { 
       var left = buildingsWrapper.css('left'); 

       if(!animStarted) { 
        animStarted = true; 

        // will work but will stop and start again after animStarted set to false. that start/stop is not what i want. 
        buildingsWrapper.animate({ 
         left: parseInt(left) - 50 
        }, 300, function() { 
         animStarted = false; 
        }); 
       } 
      } 
     }); 
    }; 

    followMouseMove(); 
}); 

答えて

0

するTryのMouseMove:

buildingsWrapper.on('mouseover', function(){ 
    $(document).mousemove(function(e) { 
      var mouseX = e.pageX; 
      var slideT = (mouseX*(-1))+"px"; 



     buildingsWrapper.css({'left': slideT}); 
});  
     }); 

ユーザーが(右または左に行く)アニメーション化するために彼のマウスを移動しなければならないので、あなたが

+0

ないつもり作業をしたいアニメーションを取得するためにslideTを変更してみてください。 –

関連する問題