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 相关文章推荐
jQuery 扩展对input的一些操作方法
Oct 30 Javascript
JS 实现双色表格实现代码
Nov 24 Javascript
jquery 使用点滴函数代码
May 20 Javascript
如何使用json在前后台进行数据传输实例介绍
Apr 11 Javascript
ExtJS自定义主题(theme)样式详解
Nov 18 Javascript
JavaScript的Ext JS框架中的GridPanel组件使用指南
May 21 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
Aug 01 Javascript
JavaScript三种绑定事件方式及相互之间的区别分析
Jan 10 Javascript
javascript设计模式之中介者模式学习笔记
Feb 15 Javascript
基于vue的fullpage.js单页滚动插件
Mar 20 Javascript
MUI实现上拉加载和下拉刷新效果
Jun 30 Javascript
vue打包相关细节整理(小结)
Sep 28 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的分页功能
2007/03/21 PHP
Smarty Foreach 使用说明
2010/03/23 PHP
smarty获得当前url的方法分享
2014/02/14 PHP
Yii2使用自带的UploadedFile实现的文件上传
2016/06/20 PHP
PHP析构函数destruct与垃圾回收机制的讲解
2019/03/22 PHP
PHP操作Redis常用命令的实例详解
2020/12/23 PHP
Javascript this关键字使用分析
2008/10/21 Javascript
chrome原生方法之数组
2011/11/30 Javascript
jQuery中click事件用法实例
2014/12/26 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
2016/03/06 Javascript
利用node.js实现自动生成前端项目组件的方法详解
2017/07/12 Javascript
vue中实现滚动加载更多的示例
2017/11/08 Javascript
vue环形进度条组件实例应用
2018/10/10 Javascript
ztree加载完成后显示勾选节点的实现代码
2018/10/22 Javascript
微信小程序下拉刷新PullDownRefresh的使用方法
2018/11/29 Javascript
Vue 嵌套路由使用总结(推荐)
2020/01/13 Javascript
JavaScript中的全局属性与方法深入解析
2020/06/14 Javascript
使用pyecharts无法import Bar的解决方案
2020/04/23 Python
Python解决八皇后问题示例
2018/04/22 Python
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
2020/02/29 Python
Python装饰器的应用场景代码总结
2020/04/10 Python
基于Python实现天天酷跑功能
2021/01/06 Python
戴森美国官网:Dyson美国
2016/09/11 全球购物
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
英国最大的LED专业零售商:Led Hut
2018/03/16 全球购物
中海讯通笔试题
2015/09/15 面试题
实习鉴定范文
2013/12/19 职场文书
贸易跟单员英文求职信
2014/04/19 职场文书
师范生求职信
2014/06/14 职场文书
小学生感恩老师演讲稿
2014/08/28 职场文书
高中升旗仪式演讲稿
2014/09/09 职场文书
群众路线对照检查材料
2014/09/22 职场文书
2015年环境监察工作总结
2015/07/23 职场文书