亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

javascript如何判斷鼠標移動的方向(左,上,右,下)?

javascript如何判斷鼠標移動的方向(左,上,右,下)?

一只甜甜圈 2018-08-07 09:09:52
$(document).mousemove(function( e ) {    var x = e.clientX;    var y = e.clientY;    /*        請幫忙提供算法思路,謝謝大家!    */});
查看完整描述

1 回答

?
冉冉說

TA貢獻1877條經驗 獲得超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 ) 原理我也不太清楚,然后就能返回四個值,就可判斷 四個方向。


查看完整回答
反對 回復 2018-09-25
  • 1 回答
  • 0 關注
  • 3460 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號