gpt4 book ai didi

javascript - javascript 中的 mouseover 和 mouseout 事件无法正常工作

转载 作者:太空宇宙 更新时间:2023-11-03 23:47:50 26 4
gpt4 key购买 nike

我正在尝试制作一个 div,它在鼠标悬停在其父 div 上时弹出并在鼠标移开时消失。但是当我在那个 div 区域中输入鼠标时,它并没有显示出明显的高度增加,而是它的高度连续上下闪烁,即使是鼠标在该区域内的轻微移动(即,鼠标没有被移出该区域滑动时)。

查看工作代码:http://jsfiddle.net/ankur3291/xN5bS/

首先,我想知道 mouseover 和 mouseout 事件是如何工作的(它们的真正含义),其次,有什么补救措施?我基本上是在纯 javascript 中找到解决方案,但 jQuery 代码也很不错。请参阅下面的完整代码:

<!DOCTYPE html>
<html>
<head>
<title>js height check</title>
<style type="text/css">
#box{display:block;height:200px;width:200px;border:1px solid #000;position:relative;}
#inner{display:none;height:0;opacity:0.6;background-color:#000;width:200px;position:absolute;bottom:0;}
</style>
<script type="text/javascript">
function heightUp()
{
var h=20;
var obj=document.getElementById("inner");
obj.style.display="block";
function frame()
{
h=h+5;
obj.style.height=h+"px";
if(h>=150)
clearInterval(timer1);
}
var timer1=setInterval(frame,10);
}
function heightDown()
{
var obj=document.getElementById("inner");
var h=parseInt(obj.style.height);
document.getElementById("matter").innerHTML=h;
function frame()
{
h=h-5;
obj.style.height=h+"px";
if(h>=30)
{
obj.style.display="none";
clearInterval(timer2);
}
}
var timer2=setInterval(frame,10);
//obj.style.height-=100+'px';
}
</script>
</head>
<body>
<div id="box" onmouseover="heightUp()" onmouseout="heightDown()">
<div id="inner">
</div>
</div>
<p id="matter">h</p>
</body>
</html>

最佳答案

这里的问题是,当 inner 上升到你的光标点时,因为它在 box 元素的“顶部”,你在技术上不再是“结束” "box 元素。因此,mouseout 事件触发。

如果您将 pointer-events: none 添加到 inner 的 CSS 声明中,这将起作用,因为您告诉该元素忽略指针事件。这样,被遮挡的元素 (box) 将接收事件。

这是一个 a fiddle with it fixed .

此外,在分配事件处理程序时,您不应使用 onmouseoveronmouseout HTML 属性,而应通过 addEventListener 接口(interface)执行此操作。 (这是 IE8 中的 attachEvent,顺便说一下)

关于javascript - javascript 中的 mouseover 和 mouseout 事件无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21120805/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com