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入门教程(7) History历史对象
Jan 31 Javascript
php上传图片并给图片打上透明水印的代码
Jun 07 Javascript
js各种验证文本框输入格式(正则表达式)
Oct 22 Javascript
javascript学习笔记(十七) 检测浏览器插件代码
Jun 20 Javascript
eclipse如何忽略js文件报错(附图)
Oct 30 Javascript
JavaScript不刷新实现浏览器的前进后退功能
Nov 05 Javascript
jquery事件与绑定事件
Mar 16 Javascript
jQuery制作input提示内容(兼容IE8以上)
Jul 05 jQuery
纯JS实现出生日期[年月日]下拉菜单效果
Jun 01 Javascript
详解javascript appendChild()的完整功能
Aug 18 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
Sep 28 Javascript
js数组去重的方法总结
Jan 18 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 zend 相对路径问题
2009/01/12 PHP
PHP中SESSION的注销与清除
2015/04/16 PHP
PHP session 会话处理函数
2016/06/06 PHP
javascript appendChild,innerHTML,join性能比较代码
2009/08/29 Javascript
asp.net HttpHandler实现图片防盗链
2009/11/09 Javascript
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
jQuery的实现原理的模拟代码 -5 Ajax
2010/08/07 Javascript
jQuery遍历对象、数组、集合实例
2014/11/08 Javascript
javascript实现简单的二级联动
2015/03/19 Javascript
javascript实现保留两位小数的多种方法
2015/12/18 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
微信小程序 教程之wxapp 视图容器 view
2016/10/19 Javascript
jQuery实现动态添加tr到table的方法
2016/12/26 Javascript
Vue数据驱动模拟实现1
2017/01/11 Javascript
Javascript同时声明一连串(多个)变量的方法
2017/01/23 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
jQuery获取table表中的td标签(实例讲解)
2017/07/28 jQuery
js下拉菜单生成器dropMenu使用方法详解
2017/08/01 Javascript
解决JSON.stringify()自动将中文转译成unicode的问题
2018/01/05 Javascript
JavaScript生成一个不重复的ID的方法示例
2019/09/16 Javascript
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
[51:10]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Django教程笔记之中间件middleware详解
2018/08/01 Python
python找出完数的方法
2018/11/12 Python
关于初始种子自动选取的区域生长实例(python+opencv)
2020/01/16 Python
Python re正则表达式元字符分组()用法分享
2020/02/10 Python
Python使用Socket实现简单聊天程序
2020/02/28 Python
Django nginx配置实现过程详解
2020/09/10 Python
详解Canvas 实现炫丽的粒子运动效果(粒子生成文字)
2018/02/01 HTML / CSS
生产厂厂长岗位职责
2013/12/25 职场文书
经典婚礼主持开场白
2014/03/13 职场文书
高中学校对照检查材料
2014/08/31 职场文书
歌颂党的演讲稿
2014/09/10 职场文书
2014学生会工作总结报告
2014/12/02 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
2016暑期政治学习心得体会
2016/01/23 职场文书