时间:2021-05-26
网上大部分判断鼠标移入div移入移出都是使用一下方法:
这个方法确实十分奇特,使用起来十分方便。
后来自己看了一些文章,看到有另一种以斜率的方法来判断鼠标的移动方向。
上图是此方法的示意图,以浏览器左上角做原点,水平轴作为x轴,往右为正;竖直轴作为y轴,向上为正。
中间的div的左上角坐标(x1,y1),右下角坐标(x2,y2),中心点的坐标(x0,y0)。
设如图两点的斜率为k(k<0),关于x轴对称的斜率为-k。
另外鼠标刚移入时,鼠标的坐标设为(x,y);
window.onload = function(){var oDiv = document.getElementById('div1');var x1 = oDiv.offsetLeft,y1 = -oDiv.offsetTop, //注意坐标,所有的y坐标都是负数x2 = x1 + oDiv.offsetWidth,y2 = y1 - oDiv.offsetHeight, //同样y坐标为负数x0 = (x1 + x2) / 2,y0 = (y1 + y2) / 2;var k = (y2 - y1) / (x2 - x1); //斜率k// alert(-k)oDiv.onmouseover = function(e){var e = e || window.event;var x = e.clientX, //鼠标刚移入div内,记录下当前的x坐标y = -e.clientY; //鼠标刚移入div内,记录下当前的y坐标var K = (y - y0) / (x - x0); //K是鼠标移入点和中心点的斜率//当K大于k并且小于-k时,则肯定是左右移入,当移入点的x坐标大于中心点 ,则为右移入,小于则是左移入if(k < K && K < -k){if(x > x0){alert('右');}else{alert('左');}}else{//注意此处y是负数,判断上下的方法同上if(y > y0){alert('上');}else{alert('下');}}}}首先我们计算出了斜率k和-k,主要是通过鼠标进入div的坐标和中心点之间的斜率判断‘左右'或者‘上下';
通过这张图可以看出,当鼠标移入点和中心点的斜率K在 k和-k 之间时,可以判断出是左右移入。所以K在其他区间内都是上下移入;
至于怎么分辨左还是右,则就通过移入点的x坐标值是否大于中心点的x0值,大于就是右移入,小于就是左移入。
上下的判断跟左右的原理一样,不过要注意y坐标都是负的,不可将大小分辨错了。
以上所述是小编给大家介绍的JS用斜率判断鼠标进入DIV四个方向的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
做动画时,需要判断鼠标进入和退出容器的方向。网上找到的基于JQuery的实现方法,用函数封装了一下,写了一个示例。注意绑定鼠标事件用的是on(),所以JQuer
一、鼠标进入容器方向的判定判断鼠标从哪个方向进入元素容器是一个经常碰到的问题,如何来判断呢?首先想到的是:获取鼠标的位置,然后经过一大堆的if..else逻辑来
题目:按下方向键时,使层向相应的方向平滑移动20像素;四个方向键的键码分别是37(左)、38(上)、39(右)和40(下)。然后我写了下面的代码:$div就是要
鼠标翻啊翻、方向点呀点,Excel表格数据很多的时候,定位四角的数据很烦啊。Excel数据很多怎么快读定位到最角落的四个数据? 1、打开Excel表格,使
本文介绍了JavaScript检测鼠标移动方向的方法,涉及javascript鼠标操作的相关技巧,供大家参考,具体内容如下判断鼠标移入方向的功能函数functi