这篇文章将为大家详细讲解有关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检测鼠标移动方向的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。