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

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

$("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


相关文章
|
Java 微服务
【SpringBoot】SpringBoot工程 自定义配置文件
【SpringBoot】SpringBoot工程 自定义配置文件
288 0
|
开发框架 关系型数据库 PHP
Laravel
Laravel 是一款基于 PHP 的 Web 应用程序开发框架,它具有简洁、优雅的语法,强大的功能,以及丰富的组件,让开发者能够快速、高效地开发出功能丰富、性能优良的 Web 应用。要用 Laravel,首先需要安装 Laravel。
309 2
|
JavaScript 关系型数据库 MySQL
创建nodejs项目并接入mysql,完成用户相关的增删改查的详细操作
创建nodejs项目并接入mysql,完成用户相关的增删改查的详细操作
230 0
|
Web App开发 JavaScript 前端开发
鸿蒙Flutter实战:04-如何使用DevTools调试Webview
本文介绍如何在鸿蒙 Flutter 开发中调试 Webview,包括配置允许调试、找到 devtools 端口、开启端口转发、在 Chrome 中调试 Webview等。
446 0
鸿蒙Flutter实战:04-如何使用DevTools调试Webview
|
存储 安全 前端开发
在前端开发中需要考虑的常见web安全问题和攻击原理以及防范措施
在前端开发中需要考虑的常见web安全问题和攻击原理以及防范措施
1364 0
|
人工智能 自然语言处理 Java
用智谱 GLM-4大模型开发自己的IDEA插件
V 哥建议研究大模型先从研究开放 API 开始,作为程序员的你觉对不是什么难事,通过研究 API 的过程中,可以让你更加了解大模型的原理,当然想要更深入的理解,需要对开源大模型的源码进行研究,根据个人的技术能力,量力而行。研究 API 是第一步,目前热招的岗位中,就有基于大模型开放 API 做应用开发的,大家可以在招聘站点上具体看看职位要求。
545 0
用智谱 GLM-4大模型开发自己的IDEA插件
Outlook邮箱怎么建立邮件组?
在Outlook中创建邮件组,登录邮箱后点击“联系人”,选择“新建联系人组”,命名并添加成员,保存即成。发邮件时直接写邮件组名,Outlook会自动填充成员。可编辑或删除组,高效管理邮件收发。
|
Android开发
Android SystemUI去掉拖动亮度条QSPanel界面隐藏功能
Android SystemUI去掉拖动亮度条QSPanel界面隐藏功能
337 0
|
存储 API 开发工具
对象存储oss使用问题之操作报错:The request signature we calculated does not match the signature you provide如何解决
《对象存储OSS操作报错合集》精选了用户在使用阿里云对象存储服务(OSS)过程中出现的各种常见及疑难报错情况,包括但不限于权限问题、上传下载异常、Bucket配置错误、网络连接问题、跨域资源共享(CORS)设定错误、数据一致性问题以及API调用失败等场景。为用户降低故障排查时间,确保OSS服务的稳定运行与高效利用。
4523 0
安装并使用labelImg标注数据集,yolo,VOC格式
安装并使用labelImg标注数据集,yolo,VOC格式
665 0