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 相关文章推荐
javascript 面向对象全新理练之原型继承
Dec 03 Javascript
我的javascript 函数链之演变
Apr 07 Javascript
JQuery获取或设置ckeditor的数据(示例代码)
Nov 15 Javascript
javascript实现客户端兼容各浏览器创建csv并下载的方法
Mar 23 Javascript
javascript中活灵活现的Array对象详解
Nov 30 Javascript
jquery平滑滚动到顶部插件使用详解
May 08 jQuery
Angular 4依赖注入学习教程之组件服务注入(二)
Jun 04 Javascript
Angular客户端请求Rest服务跨域问题的解决方法
Sep 19 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
Aug 16 Javascript
小程序实现单选多选功能
Nov 04 Javascript
ant design vue中日期选择框混合时间选择器的用法说明
Oct 27 Javascript
nuxt 页面路由配置,主页轮播组件开发操作
Nov 05 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
虫族 Zerg 热键控制
2020/03/14 星际争霸
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
jquery提示 &quot;object expected&quot;的解决方法
2009/12/13 Javascript
jquery批量设置属性readonly和disabled的方法
2014/01/24 Javascript
原生js结合html5制作简易的双色子游戏
2015/03/30 Javascript
JavaScript中constructor()方法的使用简介
2015/06/05 Javascript
jQuery toggle 代替方法
2016/03/22 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
AngularJs Managing Service Dependencies详解
2016/09/02 Javascript
js前端日历控件(悬浮、拖拽、自由变形)
2017/03/02 Javascript
js实现抽奖效果
2017/03/27 Javascript
vue-hook-form使用详解
2017/04/07 Javascript
详解Vue学习笔记入门篇之组件的内容分发(slot)
2017/07/17 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
2017/09/05 Javascript
Vue服务端渲染实践之Web应用首屏耗时最优化方案
2019/03/22 Javascript
Vue axios 跨域请求无法带上cookie的解决
2020/09/08 Javascript
使用IronPython把Python脚本集成到.NET程序中的教程
2015/03/31 Python
基于Python实现文件大小输出
2016/01/11 Python
Python打造出适合自己的定制化Eclipse IDE
2016/03/02 Python
Python 多线程的实例详解
2017/09/07 Python
python3实现磁盘空间监控
2018/06/21 Python
python 与服务器的共享文件夹交互方法
2018/12/27 Python
python实现动态数组的示例代码
2019/07/15 Python
Python生成随机验证码代码实例解析
2020/06/09 Python
浅谈Python 钉钉报警必备知识系统讲解
2020/08/17 Python
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
UNIX命令速查表
2012/03/10 面试题
管理部副部长岗位职责范文
2014/03/09 职场文书
综治宣传月活动总结
2014/04/28 职场文书
运动会的口号
2014/06/09 职场文书
土建施工员岗位职责
2015/04/11 职场文书
学校光盘行动倡议书
2015/04/28 职场文书
海洋天堂观后感
2015/06/05 职场文书
经典法律座右铭(50句)
2019/08/15 职场文书
为什么MySQL8新特性会修改自增主键属性
2022/04/18 MySQL