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 相关文章推荐
写的htc的数据表格
Jan 20 Javascript
AutoSave/自动存储功能实现
Mar 24 Javascript
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
Apr 01 Javascript
JS获取农历日期具体实例
Nov 14 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
Aug 15 Javascript
JQuery实现动态添加删除评论的方法
May 18 Javascript
基于jquery animate操作css样式属性小结
Nov 27 Javascript
Validform表单验证总结篇
Oct 31 Javascript
Angular6中使用Swiper的方法示例
Jul 09 Javascript
JavaScript栈和队列相关操作与实现方法详解
Dec 07 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
Apr 10 Javascript
解决layui的radio属性或别的属性没显示出来的问题
Sep 26 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 foreach循环使用详解与实例代码
2010/05/08 PHP
php 归并排序 数组交集
2011/05/10 PHP
PHP UTF8中文字符截断函数代码
2012/09/11 PHP
linux命令之调试工具strace的深入分析
2013/06/03 PHP
PHP+memcache实现消息队列案例分享
2014/05/21 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
2014/06/30 PHP
将PHP的session数据存储到数据库中的代码实例
2016/06/24 PHP
建立良好体验度的Web注册系统ajax
2007/07/09 Javascript
开发中可能会用到的jQuery小技巧
2014/03/07 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
2014/12/29 Javascript
JavaScript数组Array对象增加和删除元素方法总结
2015/01/20 Javascript
JavaScript数据类型详解
2015/04/01 Javascript
jQuery编程中的一些核心方法简介
2015/08/14 Javascript
微信QQ的二维码登录原理js代码解析
2016/06/23 Javascript
Webpack如何引入bootstrap的方法
2017/06/17 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
vue2实现可复用的轮播图carousel组件详解
2017/11/27 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
2018/08/31 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
Python程序设计入门(4)模块和包
2014/06/16 Python
Python标准库之多进程(multiprocessing包)介绍
2014/11/25 Python
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
使用Python来编写HTTP服务器的超级指南
2016/02/18 Python
Python中int()函数的用法浅析
2017/10/17 Python
浅析python实现scrapy定时执行爬虫
2018/03/04 Python
python实现QQ邮箱/163邮箱的邮件发送
2019/01/22 Python
使用Python OpenCV为CNN增加图像样本的实现
2019/06/10 Python
windows上安装python3教程以及环境变量配置详解
2019/07/18 Python
Python socket模块方法实现详解
2019/11/05 Python
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
个人简历自我评价八例
2013/10/31 职场文书
田径运动会开幕式及主持词
2014/03/28 职场文书
事假请假条范文
2014/04/11 职场文书
会计工作态度自我评价
2015/03/06 职场文书
2019年家电促销广告语集锦
2019/10/21 职场文书