Javascript实现鼠标移入方向感知


Posted in Javascript onJune 24, 2020

本文介绍了JavaScript检测鼠标移动方向的方法,涉及javascript鼠标操作的相关技巧,供大家参考,具体内容如下

判断鼠标移入方向的功能函数

function getDir(ev, ele) {
      var l = ele.getBoundingClientRect().left;
      var t = ele.getBoundingClientRect().top;
      var w = ele.getBoundingClientRect().width;
      var h = ele.getBoundingClientRect().height;
      var x = (ev.clientX - l - w / 2) * (w > h ? (h / w) : 1);
      var y = (ev.clientY - t - h / 2) * (h > w ? (w / h) : 1);
      var deg = Math.atan2(y, x) / (Math.PI / 180);
      var d = (Math.round((deg + 180) / 90) + 3) % 4;
      return d;
      // d的值{上:0,右:1,下:2,左:3}
 }

整体代码:

html:

<div id="container">
    <img src="./bg.jpg" alt="">
    <p class="ps">故事成功地将原本隐藏在黑暗中,用世界上最强大的毅力和最艰辛的努力去做最密不可宣和隐讳残酷的事情的忍者,描绘成了太阳下最值得骄傲最光明无限的职业。在岸本齐史笔下的忍者世界中,每一位年轻的忍者都在开拓着属于自己的忍道。
    </p>
</div>

CSS:

*{
  margin: 0;
  padding: 0;
}

#container{
  width: 400px;
  height: 200px;
  position: relative;
  margin-top: 100px;
  margin-left: 200px;
  overflow: hidden;
  
}
#container img{
  width: 100%;
  height: 100%;
  transition: 0.5s;
}
#container p{
  width: 100%;
  height: 100%;
  padding: 10px;
  box-sizing: border-box;
  position: absolute;
  left: 0;
  /* top: 0; */
  background: rgba(0, 0, 0, .7);
  color: #ccc;
  font-size: 14px;
  line-height: 24px;
  
}
#container:hover img{
  transform: scale(1.1);
}

JS:

window.onload = function () {
      var box = document.getElementById('container');
      var ps = document.getElementsByClassName('ps');
      var pos=[
        {left:0,top:'-100%'},
        {left:'100%',top:0},
        {left:0,top:'100%'},
        {left:'-100%',top:0}
      ]
      box.onmouseenter = function(ev){
        var dir = getDir(ev,this);
        ps[0].style.transition='';
        ps[0].style.left=pos[dir].left;
        ps[0].style.top=pos[dir].top;
        setTimeout(function(){
          ps[0].style.transition='.3s';
          ps[0].style.left=0;
          ps[0].style.top=0;
        },1000/60)
      }
      box.onmouseleave = function(ev){
        var dir = getDir(ev,this);
        setTimeout(function(){
          ps[0].style.transition='';
          ps[0].style.left=pos[dir].left;
          ps[0].style.top=pos[dir].top;
        },100)
      }
    }
    function getDir(ev, ele) {
      var l = ele.getBoundingClientRect().left;
      var t = ele.getBoundingClientRect().top;
      var w = ele.getBoundingClientRect().width;
      var h = ele.getBoundingClientRect().height;
      var x = (ev.clientX - l - w / 2) * (w > h ? (h / w) : 1);
      var y = (ev.clientY - t - h / 2) * (h > w ? (w / h) : 1);
      var deg = Math.atan2(y, x) / (Math.PI / 180);
      var d = (Math.round((deg + 180) / 90) + 3) % 4;
      return d;
      // d的值{上:0,右:1,下:2,左:3}
}

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

Javascript 相关文章推荐
JQuery 学习笔记 element属性控制
Jul 23 Javascript
JS操作Cookies的小例子
Oct 15 Javascript
js 绑定键盘鼠标事件示例代码
Feb 12 Javascript
jQuery中$.get、$.post、$.getJSON和$.ajax的用法详解
Nov 19 Javascript
小米公司JavaScript面试题
Dec 29 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
Jan 13 Javascript
jQuery、zepto、js常用小技巧
Feb 12 Javascript
Vue.js展示AJAX数据简单示例讲解
Mar 29 Javascript
JavaScript 完成注册页面表单校验的实例
Aug 19 Javascript
vue-router 实现导航守卫(路由卫士)的实例代码
Sep 02 Javascript
Vue 使用formData方式向后台发送数据的实现
Apr 14 Javascript
javascript中正则表达式语法详解
Aug 07 Javascript
javascript实现前端input密码输入强度验证
Jun 24 #Javascript
原生js实现html手机端城市列表索引选择城市
Jun 24 #Javascript
jQuery实时统计输入框字数及限制
Jun 24 #jQuery
jQuery实现移动端下拉展现新的内容回弹动画
Jun 24 #jQuery
JS forEach跳出循环2种实现方法
Jun 24 #Javascript
js判断鼠标移入移出方向的方法
Jun 24 #Javascript
JS判断数组是否包含某元素实现方法汇总
Jun 24 #Javascript
You might like
PHP JSON格式数据交互实例代码详解
2011/01/13 PHP
php实现MD5加密16位(不要默认的32位)
2013/08/12 PHP
php计算给定时间之前的函数用法实例
2015/04/03 PHP
php遍历类中包含的所有元素的方法
2015/05/12 PHP
PHP设计模式之注册树模式分析
2018/01/26 PHP
php实现在线考试系统【附源码】
2018/09/18 PHP
javascript 建设银行登陆键盘
2008/06/10 Javascript
Jquery调用webService远程访问出错的解决方法
2010/05/21 Javascript
页面使用密码保护代码
2013/04/10 Javascript
JavaScript的递归之递归与循环示例介绍
2013/08/05 Javascript
Underscore.js 1.3.3 中文注释翻译说明
2015/06/25 Javascript
jQuery图片轮播功能实例代码
2017/01/29 Javascript
Windows下使用Nodejs运行js的方法
2017/09/02 NodeJs
jQuery实现模糊查询的方法分析
2018/05/10 jQuery
vue+webpack dev本地调试全局样式引用失效的解决方案
2019/11/12 Javascript
vue props对象validator自定义函数实例
2019/11/13 Javascript
如何在vue 中使用柱状图 并自修改配置
2021/01/21 Vue.js
详解javascript脚本何时会被执行
2021/02/05 Javascript
在Python的Flask框架中使用模版的入门教程
2015/04/20 Python
Python 的内置字符串方法小结
2016/03/15 Python
对python 矩阵转置transpose的实例讲解
2018/04/17 Python
python打开文件的方式有哪些
2020/06/29 Python
Keras loss函数剖析
2020/07/06 Python
Pycharm同步远程服务器调试的方法步骤
2020/11/04 Python
HTML5 Web 存储详解
2016/09/16 HTML / CSS
html5使用html2canvas实现浏览器截图的示例
2017/08/31 HTML / CSS
HTML5之WebGL 3D概述(上)—WebGL原生开发开启网页3D渲染新时代
2013/01/31 HTML / CSS
什么是servlet
2012/05/08 面试题
通信工程毕业生自荐信
2013/11/01 职场文书
网球场地租赁协议范本
2014/10/07 职场文书
入党积极分子自我批评思想汇报
2014/10/10 职场文书
学校政风行风评议工作总结
2014/10/21 职场文书
置业顾问岗位职责
2015/02/09 职场文书
运动会闭幕式主持词
2015/07/01 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python
mysql的Buffer Pool存储及原理
2022/04/02 MySQL