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和jquery批量绑定事件传参数一(新猪猪原创)
Jun 23 Javascript
关于javascript DOM事件模型的两件事
Jul 22 Javascript
JS图片浏览组件PhotoLook的公开属性方法介绍和进阶实例代码
Nov 09 Javascript
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
Nov 03 Javascript
JS实现定时页面弹出类似QQ新闻的提示框
Nov 07 Javascript
js判断ie版本号的简单实现代码
Mar 05 Javascript
jQuery制作圣诞主题页面 更像是爱情影集
Aug 10 Javascript
jquery animate动画持续运动的实例
Nov 29 jQuery
微信小程序获取用户openid的实现
Dec 24 Javascript
vxe-table vue table 表格组件功能
May 26 Javascript
推荐几个不错的console调试技巧实现
Dec 20 Javascript
js实现盒子移动动画效果
Aug 09 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执行zip与rar解压缩方法实现代码
2010/12/05 PHP
php打开文件fopen函数的使用说明
2013/07/05 PHP
php中count获取多维数组长度的方法
2014/11/03 PHP
基础的WordPress插件制作教程
2015/11/24 PHP
PHP中模拟链表和链表的基本操作示例
2016/02/27 PHP
基于CI框架的微信网页授权库示例
2016/11/25 PHP
Yii实现复选框批量操作实例代码
2017/03/15 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
2017/07/04 PHP
Nginx实现反向代理
2017/09/20 Servers
PHP PDOStatement::fetchColumn讲解
2019/01/31 PHP
JavaScript游戏之优化篇
2010/11/08 Javascript
node.js中的fs.fchown方法使用说明
2014/12/16 Javascript
js在指定位置增加节点函数insertBefore()用法实例
2015/01/12 Javascript
jquery动态添加删除(tr/td)
2015/02/09 Javascript
浅析AngularJS中的指令
2016/03/20 Javascript
js前端实现图片懒加载(lazyload)的两种方式
2017/04/24 Javascript
vue实现五子棋游戏
2020/05/28 Javascript
vue项目中微信登录的实现操作
2020/09/08 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
跟老齐学Python之集合的关系
2014/09/24 Python
Python基础练习之用户登录实现代码分享
2017/11/08 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
python实现微信自动回复功能
2018/04/11 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
python3实现钉钉消息推送的方法示例
2019/03/14 Python
Flask教程之重定向与错误处理实例分析
2019/08/01 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
多个版本的python共存时使用pip的正确做法
2020/10/26 Python
皇马官方商城:Real Madrid Store
2016/09/02 全球购物
大学生励志演讲稿
2014/04/25 职场文书
党员年度个人总结
2015/02/14 职场文书
财务人员个人工作总结
2015/02/27 职场文书
抢劫罪辩护词
2015/05/21 职场文书
JavaScript+HTML实现学生信息管理系统
2021/04/20 Javascript
使用JS实现简易计算器
2021/06/14 Javascript