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

查看:130
本文介绍了javascript如何判断鼠标移动的方向(左,上,右,下)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

$(document).mousemove(function( e ) {
    var x = e.clientX;
    var y = e.clientY;

    /*
        请帮忙提供算法思路,谢谢大家!
    */
});

解决方案

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 ) 原理我也不太清楚,然后就能返回四个值,就可判断 四个方向。

这篇关于javascript如何判断鼠标移动的方向(左,上,右,下)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆