首页 > 代码库 > 一天一点新东西-鼠标进入容器方向判断

一天一点新东西-鼠标进入容器方向判断

很久之前思考的这个东西,怎么判断鼠标是从哪个方向进入元素的?有代码和一点点解释,用法很精妙,记下来,希望以后看见能记起。

index.html

<!DOCTYPE html>
<html>
<head>
<style>
#wrap{height:100px;width:100px;background-color:#000000;}
</style>
<script src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<div id="wrap"></div>
<div id="result"></div>
</body>
<script>
$("#wrap").bind("mouseenter mouseleave",function(e) {
var w = $(this).width();
var h = $(this).height();
var x = (e.pageX - this.offsetLeft - (w / 2)) * (w > h ? (h / w) : 1);
var y = (e.pageY - this.offsetTop - (h / 2)) * (h > w ? (w / h) : 1);
var direction = Math.round((((Math.atan2(y, x) * (180 / Math.PI)) + 180) / 90) + 3) % 4; //direction的值为“0,1,2,3”分别对应着“上,右,下,左”
var eventType = e.type;
var dirName = new Array(‘上方‘,‘右侧‘,‘下方‘,‘左侧‘);
if(e.type == ‘mouseenter‘){
$("#result").html(dirName[direction]+‘进入‘);
}else{
$(‘#result‘).html(dirName[direction]+‘离开‘);
}
});
</script>
</html>
关键性的东西,在于理解下面这张图上面的几个参数变量,和atan2()函数的用法。
技术分享
不多说,自己领悟到的,远比解释来得深刻,数学中的象限问题。

一天一点新东西-鼠标进入容器方向判断