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操作Cookies的小例子
Oct 15 Javascript
Jquery实现图片放大镜效果的思路及代码(自写)
Oct 18 Javascript
javascript计算星座属相(十二生肖属相)示例代码
Jan 09 Javascript
贴近用户体验的Jquery日期、时间选择插件
Aug 19 Javascript
js+canvas简单绘制圆圈的方法
Jan 28 Javascript
基于zepto的移动端轻量级日期插件--date_picker
Mar 04 Javascript
浅谈jQuery添加的HTML,JS失效的问题
Oct 05 Javascript
JS中作用域和变量提升(hoisting)的深入理解
Oct 31 Javascript
React应用中使用Bootstrap的方法
Aug 15 Javascript
react-native-fs实现文件下载、文本存储的示例代码
Sep 22 Javascript
微信小程序canvas实现刮刮乐效果
Jul 09 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
Sep 14 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
解析zend Framework如何自动加载类
2013/06/28 PHP
回帖脱衣服的图片实现代码
2014/02/15 PHP
symfony2.4的twig中date用法分析
2016/03/18 PHP
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
2009/01/30 Javascript
基于jquery的返回顶部效果(兼容IE6)
2011/01/17 Javascript
Json解析的方法小结
2016/06/22 Javascript
AngularJs Injecting Services Into Controllers详解
2016/09/02 Javascript
AngularJS过滤器filter用法分析
2016/12/11 Javascript
JS获取当前地理位置的方法
2017/10/25 Javascript
实例分析JS与Node.js中的事件循环
2017/12/12 Javascript
浅谈VUE监听窗口变化事件的问题
2018/02/24 Javascript
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
AngularJS实现的自定义过滤器简单示例
2019/02/02 Javascript
element-ui 文件上传修改文件名的方法示例
2019/11/05 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
2021/02/26 Vue.js
[02:48]DOTA2英雄基础教程 拉席克
2013/12/12 DOTA
布同 统计英文单词的个数的python代码
2011/03/13 Python
Python装饰器使用示例及实际应用例子
2015/03/06 Python
使用Python脚本将Bing的每日图片作为桌面的教程
2015/05/04 Python
Python读取sqlite数据库文件的方法分析
2017/08/07 Python
详解Python3除法之真除法、截断除法和下取整对比
2019/05/23 Python
Python tkinter界面实现历史天气查询的示例代码
2020/08/23 Python
pandas抽取行列数据的几种方法
2020/12/13 Python
鲜为人知的HTML5语音合成功能
2019/05/17 HTML / CSS
英国第一家领先的在线处方眼镜零售商:Glasses Direct
2018/02/23 全球购物
Reebok官方旗舰店:美国知名健身品牌锐步
2019/01/07 全球购物
学生的自我鉴定范文
2013/10/24 职场文书
大学生应聘求职信
2014/05/26 职场文书
物联网工程专业推荐信
2014/09/08 职场文书
2016班级元旦联欢会开幕词
2016/03/04 职场文书
Golang中interface{}转为数组的操作
2021/04/30 Golang
HTML+CSS制作心跳特效的实现
2021/05/26 HTML / CSS