一个代码段(判断鼠标进入方向)

简介: 一个代码段(判断鼠标进入方向)

$("li").on("mouseenter mouseleave",function(e) {
           var w = this.offsetWidth;
           var h = this.offsetHeight;
           var toTop = this.getBoundingClientRect().top + document.body.scrollTop;  //兼容滚动条
           var x = (e.pageX - this.getBoundingClientRect().left - (w / 2)) * (w > h ? (h / w) : 1);   //获取当前鼠标的x轴位置
           var y = (e.pageY - toTop - h/2) * (h > w ? (w / h) : 1);
          //上面对长方形也做了兼容,也就是按照最小的那个边的一半作为半径了
          //例如有一个宽6,高是2的矩形 右上角的坐标就是{x:3,y:1},经过上面的计算后{x:2/6 * 3,y:1}=》{x:1,y:1}   算出来也就是45°的样子
          //如果是正方形,可以去掉后面的系数(w>h && h>w)
           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 res = Math.atan2(y, x) / (Math.PI / 180) + 180 ;
           $('.line').css('transform','rotate('+ res +'deg)');
           // console.log(((Math.atan2(y, x) * 180 / Math.PI) + 180));
           // console.log(Math.round((Math.atan2(y, x) / (Math.PI / 180) + 180) / 90 + 3) % 4);
           var dirName = new Array('上方','右侧','下方','左侧');
               $('.res').text(res + 'deg');
           if(eventType == 'mouseenter'){
              $('.res').text(dirName[direction]+'进入');
              animationIn(direction);
          }else{
              $('.res').text(dirName[direction]+'离开');
              animationOut(direction);
          }
      });

转载自:http://www.jianshu.com/p/2a851db6475a


相关文章
键盘数字区域不可用解决办法
目前归纳了两种场景以及对应的处理办法
894 0
键盘数字区域不可用解决办法
|
5月前
|
C语言
C语言获取鼠标位置并设置鼠标位置
C语言获取鼠标位置并设置鼠标位置
|
12月前
|
Web App开发 C++
c++ 实现不在同一程序内,在光标处(当前有焦点的窗体输入框)输入字符
c++ 实现不在同一程序内,在光标处(当前有焦点的窗体输入框)输入字符
101 1
|
前端开发 JavaScript API
面试官问:如何判断一个元素是否在可视区域?
面试官问:如何判断一个元素是否在可视区域?
面试官问:如何判断一个元素是否在可视区域?
|
前端开发 容器
每日一题:如何判断一个元素是否在可视区域中?
每日一题:如何判断一个元素是否在可视区域中?
358 0
每日一题:如何判断一个元素是否在可视区域中?
|
前端开发
html+css鼠标经过的样式变化例题
当用户移动鼠标到指定的区域或内容时,会出现什么不一样的渲染效果呢?看这篇文章一起来了解吧!
141 0
 html+css鼠标经过的样式变化例题
|
JavaScript API
如何判断元素是否在可视区域内
如何判断元素是否在可视区域内
|
C#
【WindowsAPI之MoveWindow】 C#调整目标窗体的位置、大小
首先查看一下WindowsAPI给我们的解释  函数功能:该函数改变指定窗口的位置和尺寸。对于顶层窗口,位置和尺寸是相对于屏幕的左上角的:对于子窗口,位置和尺寸是相对于父窗口客户区的左上角坐标的。 函数原型:bool MoveWindow(HWND hWnd,int x,int y,int nWidth,int nHeight,bool BRePaint);   参数: hWnd:窗口句柄。
1944 0