JQuery获取鼠标进入和离开容器的方向


Posted in Javascript onDecember 29, 2016

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

<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
  <title>判断鼠标从哪个方向进入和离开容器</title>
  <script src="js/jquery-3.1.1.min.js"></script>
  <style>
   *{border: 0;margin: 0;padding: 0;}
   .item{width: 300px; height: 200px;border: 1px solid #999;margin: 50px;}
  </style>
 </head>
 <body>
  <div class="item">
  </div>
  <p id="info"></p>
 </body>
 <script>
  /**
   * 判断鼠标从哪个方向进入和离开容器
   * @param {Object} tag JQuery对象,事件绑定的主体
   * @param {Object} e event对象
   * @return {Number} direction 值为“0,1,2,3”分别对应着“上,右,下,左”
   */
  function moveDirection(tag,e){
   var w = $(tag).width();
   var h = $(tag).height();
   var x = (e.pageX - tag.offsetLeft - (w / 2)) * (w > h ? (h / w) : 1);
   var y = (e.pageY - tag.offsetTop - (h / 2)) * (h > w ? (w / h) : 1);
   var direction = Math.round((((Math.atan2(y, x) * (180 / Math.PI)) + 180) / 90) + 3) % 4; 
   return direction;
  }
  //使用方法
  $(".item").on("mouseenter mouseleave", function (e) {
   var eType = e.type;
   var direction = moveDirection(this,e);
   var dirName = new Array("上","右","下","左");
   if(eType == "mouseenter"){
    $("#info").text("鼠标从"+dirName[direction]+"方进入方框");
   }else if(eType == "mouseleave"){
    $("#info").text("鼠标从"+dirName[direction]+"方离开方框");
   }
  });
 </script>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
jquery ui dialog里调用datepicker的问题
Aug 06 Javascript
基于jquery的跨域调用文件
Nov 19 Javascript
JavaScript 的继承
Oct 01 Javascript
jquery 单引号和双引号的区别及使用注意
Jul 31 Javascript
jquery图片放大功能简单实现
Aug 01 Javascript
jquery链式操作的正确使用方法
Jan 06 Javascript
jQuery+jRange实现滑动选取数值范围特效
Mar 14 Javascript
js实现搜索框关键字智能匹配代码
Mar 26 Javascript
实例讲解jquery中mouseleave和mouseout的区别
Feb 17 Javascript
JS分页的实现(同步与异步)
Sep 16 Javascript
vue调试工具vue-devtools安装及使用方法
Nov 07 Javascript
javascript设计模式 ? 观察者模式原理与用法实例分析
Apr 22 Javascript
jQuery实现遮罩层登录对话框
Dec 29 #Javascript
JS实现的简易拖放效果示例
Dec 29 #Javascript
使用DeviceOne实现微信小程序功能
Dec 29 #Javascript
Angularjs 动态改变title标题(兼容ios)
Dec 29 #Javascript
浅谈js算法和流程控制
Dec 29 #Javascript
canvas学习之API整理笔记(二)
Dec 29 #Javascript
Node.js复制文件的方法示例
Dec 29 #Javascript
You might like
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
2012/11/01 PHP
php inc文件使用的风险和注意事项
2013/11/12 PHP
两种设置php载入页面时编码的方法
2014/07/29 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
2017/07/27 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
laravel 解决Validator使用中出现的问题
2019/10/25 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
jquery中ajax使用error调试错误的方法
2015/02/08 Javascript
Jquery的基本对象转换和文档加载用法实例
2015/02/25 Javascript
jquery实现简单实用的打分程序实例
2015/07/23 Javascript
第一篇初识bootstrap
2016/06/21 Javascript
基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)
2016/09/02 Javascript
jquery获取下拉框中的循环值
2017/02/08 Javascript
JavaScript实现两个select下拉框选项左移右移
2017/03/09 Javascript
微信小程序页面开发注意事项整理
2017/05/18 Javascript
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
2017/08/16 Javascript
Vue2.0结合webuploader实现文件分片上传功能
2018/03/09 Javascript
vue中的router-view组件的使用教程
2018/10/23 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
2020/04/14 Javascript
谈谈JavaScript中的垃圾回收机制
2020/09/17 Javascript
基于vue与element实现创建试卷相关功能(实例代码)
2020/12/07 Vue.js
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python爬虫爬验证码实现功能详解
2016/04/14 Python
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
Windows下安装python MySQLdb遇到的问题及解决方法
2017/03/16 Python
python与caffe改变通道顺序的方法
2018/08/04 Python
在VS2017中用C#调用python脚本的实现
2019/07/31 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
2020/08/07 Python
python实现定时发送邮件
2020/12/23 Python
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
深入探究HTML5的History API
2015/07/09 HTML / CSS
土地租赁意向书
2014/07/30 职场文书
2015年银行大堂经理工作总结
2015/04/24 职场文书
超市店长竞聘书
2015/09/15 职场文书