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 相关文章推荐
浅谈Javascript 执行顺序
Dec 18 Javascript
纯js实现div内图片自适应大小(已测试,兼容火狐)
Jun 16 Javascript
学习JavaScript设计模式(代理模式)
Dec 03 Javascript
JSON遍历方式实例总结
Dec 07 Javascript
详解AngularJs中$resource和restfu服务端数据交互
Sep 21 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
Nov 10 Javascript
JS装饰器函数用法总结
Apr 21 Javascript
echarts实现词云自定义形状的示例代码
Feb 20 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
May 13 jQuery
vue2.x数组劫持原理的实现
Apr 19 Javascript
Jquery $.map使用方法实例详解
Sep 01 jQuery
基于JavaScript实现年月日三级联动
Jun 22 Javascript
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
解析yahoo邮件用phpmailer发送的实例
2013/06/24 PHP
php实现的简单检验登陆类
2015/06/18 PHP
IE FF OPERA都可用的弹出层实现代码
2009/09/29 Javascript
Eclipse配置Javascript开发环境图文教程
2015/01/29 Javascript
jQuery实现冻结表头的方法
2015/03/09 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
2015/12/23 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
JS中this上下文对象使用方式
2016/10/09 Javascript
bootstrap datetimepicker日期插件使用方法
2017/01/13 Javascript
jQuery zTree树插件动态加载实例代码
2017/05/11 jQuery
JS点击缩略图整屏居中放大图片效果
2017/07/04 Javascript
Node.js实现连接mysql数据库功能示例
2017/09/15 Javascript
微信小程序富文本渲染引擎的详解
2017/09/30 Javascript
JavaScript插件Tab选项卡效果
2017/11/14 Javascript
react实现菜单权限控制的方法
2017/12/11 Javascript
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
2019/05/08 Javascript
一文看懂如何简单实现节流函数和防抖函数
2019/09/05 Javascript
[16:43]Heroes19_剃刀(完美)
2014/10/31 DOTA
Django框架下静态模板的继承操作示例
2019/11/08 Python
关于python 跨域处理方式详解
2020/03/28 Python
Python装饰器如何实现修复过程解析
2020/09/05 Python
python 基于opencv 绘制图像轮廓
2020/12/11 Python
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
港湾网络笔试题
2014/04/19 面试题
大学学习生活感言
2014/01/18 职场文书
金融保险专业求职信
2014/09/03 职场文书
2014年纪检部工作总结
2014/11/12 职场文书
邀请函模板
2015/02/02 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
2016年五一促销广告语
2016/01/28 职场文书
Vue vee-validate插件的简单使用
2021/06/22 Vue.js
详细了解MVC+proxy
2021/07/09 Java/Android
叶县这家生产军用电台的兵工厂,人称“四机部”,走出一上将
2022/02/18 无线电
教你使用Python获取QQ音乐某个歌手的歌单
2022/04/03 Python
win11如何查看端口是否被占用? Win11查看端口是否占用的技巧
2022/04/05 数码科技