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 相关文章推荐
使用EXT实现无刷新动态调用股票信息
Nov 01 Javascript
JavaScript高级程序设计 DOM学习笔记
Sep 10 Javascript
js indexOf()定义和用法
Oct 21 Javascript
js过滤HTML标签以及空格的思路及代码
May 24 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
Aug 01 Javascript
JavaScript实现将文本框的值插入指定位置的方法
Aug 13 Javascript
js 判断一个数字是不是2的n次方幂的实例
Nov 26 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
Jun 30 Javascript
微信小程序中显示倒计时代码实例
May 09 Javascript
前端开发之便利店收银系统代码
Dec 27 Javascript
Vue关于组件化开发知识点详解
May 13 Javascript
解决antd的Form组件setFieldsValue的警告问题
Oct 29 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中实现字符串翻转的方法
2017/02/22 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
2019/04/23 PHP
JS中彻底删除JSON对象组成的数组中的元素
2020/09/22 PHP
js替代copy(示例代码)
2013/11/27 Javascript
JavaScript中双叹号(!!)作用示例介绍
2014/04/10 Javascript
JS实现图文并茂的tab选项卡效果示例【附demo源码下载】
2016/09/21 Javascript
Angular实现购物车计算示例代码
2017/02/21 Javascript
详解angularjs利用ui-route异步加载组件
2017/05/21 Javascript
在vue项目中引入高德地图及其UI组件的方法
2018/09/04 Javascript
浅析Vue.js中v-bind v-model的使用和区别
2018/12/04 Javascript
详解如何更好的使用module vuex
2019/03/27 Javascript
vue+elementUI动态生成面包屑导航教程
2019/11/04 Javascript
微信小程序换肤功能实现代码(思路详解)
2020/08/25 Javascript
js+canvas实现转盘效果(两个版本)
2020/09/13 Javascript
[02:23]DOTA2英雄基础教程 幻影长矛手
2013/12/09 DOTA
Python列出一个文件夹及其子目录的所有文件
2016/06/30 Python
python读写json文件的简单实现
2017/04/11 Python
windows下python和pip安装教程
2018/05/25 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
Django框架视图函数设计示例
2019/07/29 Python
python hashlib加密实现代码
2019/10/17 Python
PyQt5事件处理之定时在控件上显示信息的代码
2020/03/25 Python
Python包资源下载路径报404解决方案
2020/11/05 Python
利用Python发送邮件或发带附件的邮件
2020/11/12 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
2020/12/01 Python
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
中国汽车租赁行业头部企业:一嗨租车
2019/05/16 全球购物
俄罗斯外国汽车和国产汽车配件网上商店:Движком
2020/04/19 全球购物
迟到早退检讨书
2014/02/10 职场文书
广场舞大赛策划方案
2014/05/31 职场文书
大型主题婚礼活动策划方案
2014/09/15 职场文书
宝宝满月祝酒词
2015/08/10 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书
财务年终工作总结大全
2019/06/20 职场文书
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js
2022新作动画《福星小子》释出宣传影片 加入内田真礼&宫野真守配音演出
2022/04/08 日漫