当我将鼠标悬停在图像上时,我会尝试隐藏图像并显示另一个图像。当你徘徊时,另一种方式。
我尝试过使用像mouseenter,mouseover,hover等想到的所有各种悬停效果。
它们都会导致同样的问题。如果我非常坚定而迅速地将光标拖动到动作区域,那么它将给我带来所需的效果。然而,如果我慢慢将光标拖动到动作区域,那么它将在图像之间跳转几次,最后停在正确的图像上。
这看起来非常不专业,我希望它能够做得更好,因此无论我是慢速还是快速,它都只会跳一次。
这是我的剧本:
$("#DenmarkMap").hide();
$("#InfoBadge1").hover(function(){
$("#InfoLogo").hide("puff");
$("#DenmarkMap").show("puff");
}, function(){
$("#DenmarkMap").hide("puff");
$("#InfoLogo").show("puff");
});
这是一个不起作用的小提琴 https://jsfiddle.net/ydeLvxx2/
希望你们能帮助我解决这个问题。
答案 0 :(得分:1)
这是一个纯粹的Javascript解决方案(不需要jQuery)
https://jsfiddle.net/uL0hpxbu/ 更新:CSS3版本" puff"效果:https://jsfiddle.net/230ta4tk/2/
以下是主script
的外观:
var InfoBadge1 = document.getElementById("InfoBadge1");
var InfoLogo = document.getElementById("InfoLogo");
var DenmarkMap = document.getElementById("DenmarkMap");
InfoBadge1.addEventListener("mouseover", function() {
InfoLogo.classList.toggle("puff");
DenmarkMap.classList.toggle("puff");
});
InfoBadge1.addEventListener("mouseout", function() {
InfoLogo.classList.toggle("puff");
DenmarkMap.classList.toggle("puff");
});
和CSS部分(只是一个例子,根据需要改变它)
#DenmarkMap {
position: absolute;
left: 0;
top: 0;
transition: .5s all;
}
#InfoLogo {
position: absolute;
left: 250px;
top: 120px;
transition: .5s all;
}
#InfoBadge1 {
position: absolute;
left: 0px;
top: 120px;
}
.puff {
transform: scale(1.2);
opacity: 0;
}
和HTML:
<img id="InfoBadge1" src="http://dummyimage.com/200x100/803580/ffffff&text=InfoBadge1" alt="" />
<img id="InfoLogo" src="http://dummyimage.com/200x100/803580/ffffff&text=InfoLogo" alt="" />
<img id="DenmarkMap" class="puff" src="http://dummyimage.com/200x100/3c8036/ffffff&text=DenmarkMap" alt="" />
答案 1 :(得分:0)
您不应将悬停的mouseleave
/ mouseout
事件绑定到同一图片,因为您只是隐藏它。
相反,请考虑将hover
函数绑定到父DOM节点(例如DIV):
<div id="images">
<img id="InfoBadge1" src="./Photos/DenmarkInfoBadge.png">
<img id="InfoLogo" src="./Photos/InfoLogo.png">
<img id="DenmarkMap" src="./Photos/DenmarkMap.png">
</div>
您的javascript可以成为:
$("#DenmarkMap").hide();
$("#images").hover(function(){
$("#InfoLogo").hide("puff");
$("#DenmarkMap").show("puff");
}, function(){
$("#DenmarkMap").hide("puff");
$("#InfoLogo").show("puff");
});