js判断鼠标移入移出方向的方法


Posted in Javascript onJune 24, 2020

PC端鼠标移入移出的效果很好,这里就给出判断鼠标移入移出的方法,有空再发出带效果的文章,不过授之以鱼不如受之以渔,有了个这个方法,效果不还是so easy吗?

代码:

<!DOCTYPE html>
<html lang="zh">
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title></title>
 <style type="text/css">
 * {
 padding: 0;
 margin: 0;
 }
 
 .ul-box {
 width: 345px;
 margin: 20px auto;
 background-color: #f5f5f5;
 overflow: auto;
 }
 
 .li-item {
 width: 100%;
 height: 134px;
 margin-bottom: 10px;
 border-radius: 4px;
 }
 
 .li-item1 {
 background: linear-gradient(90deg, #7f90e3 0%, #8b9bff 100%);
 }
 </style>
 </head>
 <body>
 <ul id="ulBox" class="ul-box">
 <li class="li-item li-item1" onmouseleave="derEvent(event, 'leave')" onmouseenter="derEvent(event, 'enter')"></li>
 </ul>
 </body>
 <script type="text/javascript">
 /**
 * @param {Object} event 当前事件源信息
 * @return {Number} d 方向 top 0 right 1 bottom 2 left 3
 */
 function getDer(event) {
 let ele = event.target
 var d;
 var w = ele.offsetWidth,
 h = ele.offsetHeight,
 l = ele.offsetLeft,
 t = ele.offsetTop,
 x = (event.clientX - l - w / 2) * (w > h ? (h / w) : 1),
 y = (event.clientY - t - h / 2) * (h > w ? (w / h) : 1);
 d = (Math.round((Math.atan2(y, x) * (180 / Math.PI) + 180) / 90) + 3) % 4;
 return d;
 // top 0 right 1 bottom 2 left 3
 }
 /**
 * @param {Object} event 事件源信息
 * @param {Object} type 类型 leave 离开 色 enter 进入
 */
 function derEvent(event, type) {
 let d = getDer(event)
 let txt = ''
 switch (d) {
 case 0:
  txt = '上'
  break;
 case 1:
  txt = '右'
  break;
 case 2:
  txt = '下'
  break;
 case 3:
  txt = '左'
  break;
 default:
  break;
 }
 if (type === 'leave') {
 console.log(txt, '离开')
 } else {
 console.log(txt, '进入')
 }
 }
 </script>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
Jan 29 Javascript
不用MOUSEMOVE也能滑动啊
May 23 Javascript
基于jquery实现的表格分页实现代码
Jun 21 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
May 11 Javascript
jQuery中ajax的load()方法用法实例
Dec 26 Javascript
AngularJS 让人爱不释手的八种功能
Mar 23 Javascript
Angular2库初探
Mar 01 Javascript
JS实现闭包中的沙箱模式示例
Sep 07 Javascript
JS实现仿微信支付弹窗功能
Jun 25 Javascript
JavaScript的级联函数用法简单示例【链式调用】
Mar 26 Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
Sep 07 Javascript
vue实现在data里引入相对路径
Jun 05 Vue.js
JS判断数组是否包含某元素实现方法汇总
Jun 24 #Javascript
JS script脚本中async和defer区别详解
Jun 24 #Javascript
javascript实现前端分页效果
Jun 24 #Javascript
JS实现多选框的操作
Jun 24 #Javascript
微信小程序实现发微博功能的示例代码
Jun 24 #Javascript
JavaScript实现答题评分功能页面
Jun 24 #Javascript
JS实现电脑虚拟键盘打字测试
Jun 24 #Javascript
You might like
DC四月将推出百页特刊漫画 纪念小丑诞生80周年
2020/04/09 欧美动漫
mysql5的sql文件导入到mysql4的方法
2008/10/19 PHP
php设计模式  Command(命令模式)
2011/06/17 PHP
为你总结一些php信息函数
2015/10/21 PHP
PHP命名空间用法实例分析
2019/09/04 PHP
jquery利用ajax调用后台方法实例
2013/08/23 Javascript
js实现可旋转的立方体模型
2016/10/16 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
JavaScript实现购物车基本功能
2017/07/21 Javascript
ES6中的Promise代码详解
2017/10/09 Javascript
create-react-app 修改为多入口编译的方法
2018/08/01 Javascript
JS document内容及样式操作完整示例
2020/01/14 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
2020/03/03 Javascript
解决vue项目中遇到 Cannot find module ‘chalk‘ 报错的问题
2020/11/05 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
python创建只读属性对象的方法(ReadOnlyObject)
2013/02/10 Python
Python中捕捉详细异常信息的代码示例
2014/09/18 Python
python文件读写操作与linux shell变量命令交互执行的方法
2015/01/14 Python
python保存字符串到文件的方法
2015/07/01 Python
通过mod_python配置运行在Apache上的Django框架
2015/07/22 Python
Python实现简单多线程任务队列
2016/02/27 Python
简单了解python单例模式的几种写法
2019/07/01 Python
python解释器spython使用及原理解析
2019/08/24 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
2019/09/23 Python
使用python的turtle函数绘制一个滑稽表情
2020/02/28 Python
pandas使用之宽表变窄表的实现
2020/04/12 Python
python中编写函数并调用的知识点总结
2021/01/13 Python
css背景图片的背景裁切、背景透明度、背景变换等效果运用
2012/12/24 HTML / CSS
Java程序员面试题
2013/07/15 面试题
如何掌握自荐信格式呢
2013/11/19 职场文书
班组长工作职责
2013/12/25 职场文书
党政领导班子民主生活会整改措施
2014/09/18 职场文书
2015年教师自我评价范文
2015/03/04 职场文书
详解JS数组方法
2021/11/20 Javascript
用Python生成会跳舞的美女
2022/01/18 Python
win10蓝屏0xc0000001安全模式进不了怎么办?win10出现0xc0000001的解决方法
2022/08/05 数码科技