基于JQuery的获取鼠标进入和离开容器方向的实现

news/2024/7/7 15:52:29

基于JQuery的获取鼠标进入和离开容器方向的实现

 

 做动画时,需要判断鼠标进入和退出容器的方向。网上找到的基于JQuery的实现方法,用函数封装了一下,写了一个示例。注意绑定鼠标事件用的是on(),所以JQuery版本需高于1.7。

复制代码
 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title>判断鼠标从哪个方向进入和离开容器</title>
 6         <script src="js/jquery-3.1.1.min.js"></script>
 7         <style>
 8             *{border: 0;margin: 0;padding: 0;}
 9             .item{width: 300px; height: 200px;border: 1px solid #999;margin: 50px;}
10         </style>
11     </head>
12     <body>
13         <div class="item">
14         </div>
15         <p id="info"></p>
16     </body>
17     <script>
18         /**
19          * 判断鼠标从哪个方向进入和离开容器
20          * @param {Object} tag JQuery对象,事件绑定的主体
21          * @param {Object} e   event对象
22          * @return {Number} direction 值为“0,1,2,3”分别对应着“上,右,下,左”
23          */
24         function moveDirection(tag,e){
25             var w = $(tag).width();
26             var h = $(tag).height();
27             var x = (e.pageX - tag.offsetLeft - (w / 2)) * (w > h ? (h / w) : 1);
28             var y = (e.pageY - tag.offsetTop - (h / 2)) * (h > w ? (w / h) : 1);
29             var direction = Math.round((((Math.atan2(y, x) * (180 / Math.PI)) + 180) / 90) + 3) % 4; 
30             return direction;
31         }
32         //使用方法
33         $(".item").on("mouseenter mouseleave", function (e) {
34             var eType = e.type;
35             var direction = moveDirection(this,e);
36             var dirName = new Array("上","右","下","左");
37             if(eType == "mouseenter"){
38                 $("#info").text("鼠标从"+dirName[direction]+"方进入方框");
39             }else if(eType == "mouseleave"){
40                 $("#info").text("鼠标从"+dirName[direction]+"方离开方框");
41             }
42         });
43     </script>
44 </html>

http://www.niftyadmin.cn/n/2752666.html

相关文章

android wifi P2P CONNECT, INVITE和JOIN流程选择

android wifi P2P CONNECT, INVITE和JOIN流程选择 android wifi P2P CONNECT, INVITE和JOIN流程选择posted on 2016-12-30 13:56 xuhaohunter 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/xuhaohunter/p/6236661.html

Javascript提交表单

<form action"login.do?actlogin" method"post"> <input type"submit" name"submit1" value"登陆"> </form> <form action"login.do?actlogin" name"myform" method&quo…

一切均出自实践

2019独角兽企业重金招聘Python工程师标准>>> 对于大多数中小型组织&#xff0c;甚至个人而言&#xff0c;云计算的魅力来自那些灵活、弹性和随时随处可用的云计算服务。 云计算应该包含两方面的内容&#xff1a;服务和平台。云计算即是商业模式&#xff0c;也是技术…

函数和函数指针的定义

2019独角兽企业重金招聘Python工程师标准>>> 函数的声明形参的名字可以省略&#xff0c;例如函数int main(int a,int b)可以写成int main(int,int)&#xff1b; 函数指针的定义也可以省略形参的名字&#xff0c;例如int (*p)(int a,int b)写成int (*p)(int,int); 起…

Java类型推断将不再支持可变性规范

Java类型推断是一项推荐的Java特性&#xff0c;允许开发人员使用var关键字代替显式的变量类型声明。最近的报道显示&#xff0c;由于社区内无法就区分可变和不可变变量的实现方式达成一致意见&#xff0c;Java类型推断将不再支持使用关键字区分可变的和不可变变量。提议的一些用…

Linux下的五种IO模型

引言 本文我们主要了解一下Unix/Linux下5种网络IO模型&#xff1a;blocking IO, nonblocking IO, IO multiplexing, signal driven IO, asynchronous IO以及select/poll/epoll的基本原理&#xff0c;更好的理解在高级语言中的异步编程&#xff0c;但以理解概念为主&#xff0c;…

Elasticsearch、Logstash、Kibana搭建统一日志分析平

ELKstack是Elasticsearch、Logstash、Kibana三个开源软件的组合。目前都在Elastic.co公司名下。 ELK是一套常用的开源日志监控和分析系统&#xff0c;包括一个分布式索引与搜索服务Elasticsearch&#xff0c; 一个管理日志和事件的工具logstash&#xff0c;和一个数据可视化服务…

MySQL嵌套子查询和相关子查询执行过程的区别

详细版本见个人博客&#xff1a;MySQL嵌套子查询和相关子查询执行过程的区别 子查询可以分为 相关子查询 和 嵌套子查询 两类。 一、本文用到的测试数据 假设Books表如下&#xff1a; 类编号图书名出版社价格2c#高级应用圣通出版23.002Jsp开发应用机械出版社45.003高等数学济…