猿问

javascript如何判断鼠标移动的方向(左,上,右,下)?

$(document).mousemove(function( e ) {

    var x = e.clientX;

    var y = e.clientY;


    /*

        请帮忙提供算法思路,谢谢大家!

    */

});


一只甜甜圈
浏览 3444回答 1
1回答

冉冉说

function(wrap){          var wrap = document.getElementById(wrap);          var hoverDir = function(e){              var w = wrap.offsetWidth,                  h = wrap.offsetHeight,                  x = ( e.clientX - wrap.offsetLeft - ( w / 2 ) ) * ( w > h ? ( h / w ) : 1 ),                  y = (e.clientY - wrap.offsetTop - (h / 2)) * (h > w ? (w / h) : 1),                  // 上(0) 右(1) 下(2) 左(3)                  direction = Math.round( ( ( ( Math.atan2( y, x ) * ( 180 / Math.PI ) ) + 180 ) / 90) + 3 ) % 4,                  eventType = e.type,                  dirName = new Array('上方','右侧','下方','左侧');              if( e.type == 'mouseover' || e.type == 'mouseenter' ){                  wrap.innerHTML = dirName[direction] + '进入';              }else{                  wrap.innerHTML = dirName[direction] + '离开';              }          }          if( window.addEventListener ){              wrap.addEventListener( 'mouseover',hoverDir,false );              wrap.addEventListener( 'mouseout',hoverDir,false );          }else if( window.attachEvent ){              wrap.attachEvent( 'onmouseenter',hoverDir );              wrap.attachEvent( 'onmouseleave',hoverDir );          }      }          这是通用的代码,核心就是 Math.round( ( ( ( Math.atan2( y, x ) * ( 180 / Math.PI ) 原理我也不太清楚,然后就能返回四个值,就可判断 四个方向。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答