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 相关文章推荐
Js 随机数产生6位数字
May 13 Javascript
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
Mar 28 Javascript
jquery处理json数据实例分析
Jun 03 Javascript
jQuery+easyui中的combobox实现下拉框特效
Feb 27 Javascript
Javascript节点关系实例分析
May 15 Javascript
网页中JS函数自动执行常用三种方法
Mar 30 Javascript
关于redux-saga中take使用方法详解
Feb 27 Javascript
Vue登录注册并保持登录状态的方法
Aug 17 Javascript
Vue2.0生命周期的理解
Aug 20 Javascript
小程序实现长按保存图片的方法
Dec 31 Javascript
Angular+ionic实现折叠展开效果的示例代码
Jul 29 Javascript
详解vue路由
Aug 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
cache_lite试用
2007/02/14 PHP
php表单提交问题的解决方法
2011/04/12 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
php对文件进行hash运算的方法
2015/04/03 PHP
清空上传控件input file的值
2010/07/03 Javascript
js 文本滚动效果的实例代码
2013/08/17 Javascript
Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果
2016/05/27 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
2016/05/30 Javascript
Jquery为DIV添加click事件的简单实例
2016/06/02 Javascript
JavaScript语言精粹经典实例(整理篇)
2016/06/07 Javascript
基于jQuery实现Tabs选项卡自定义插件
2016/11/21 Javascript
使用JavaScript实现链表的数据结构的代码
2017/08/02 Javascript
实例详解Node.js 函数
2018/06/10 Javascript
vue中element 上传功能的实现思路
2018/07/06 Javascript
JavaScript静态作用域和动态作用域实例详解
2019/06/17 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
2019/11/12 Javascript
原生js+css调节音量滑块
2020/01/15 Javascript
[15:39]教你分分钟做大人:龙骑士
2014/10/30 DOTA
Python网络编程 Python套接字编程
2017/09/13 Python
python3使用SMTP发送简单文本邮件
2018/06/19 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
Python整数与Numpy数据溢出问题解决
2019/09/11 Python
python数据爬下来保存的位置
2020/02/17 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
html5播放视频且动态截图实现步骤与代码(支持safari其他未测试)
2013/01/06 HTML / CSS
斯巴达比赛商店:Spartan Race
2019/01/08 全球购物
德国专业木制品经销商:Holz-Direkt24
2019/12/26 全球购物
自荐信怎么写好
2013/11/11 职场文书
就业协议书
2014/09/12 职场文书
群众路线个人自我剖析材料
2014/10/07 职场文书
服务承诺书
2015/01/19 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
入党转正申请书范文
2019/05/20 职场文书
基于Nginx实现限制某IP短时间访问次数
2021/03/31 Servers
浅谈mysql执行过程以及顺序
2021/05/12 MySQL
oracle索引总结
2021/09/25 Oracle