Hover()、mouseenter()、mouseover()等来回跳转
Hover(), mouseenter(), mouseover(), etc jumping back and forth
我正在尝试创建一种情况,当您将鼠标悬停在图片上时,它会隐藏一张图片并显示另一张图片。当你悬停时,反之亦然。
我已经尝试使用所有想到的各种悬停效果,如 mouseenter、mouseover、hover 等。
它们都会导致同样的问题。如果我非常坚定并快速地将我的光标拖到操作区域,那么它将给我想要的效果。但是,如果我慢慢地将光标拖到操作区域,那么它会在图像之间跳转几次,然后最终停在正确的图像上。
这看起来很不专业,我希望它能更有效地执行此操作,这样无论我执行得慢还是快,它都只会跳一次。
这是我的脚本:
$("#DenmarkMap").hide();
$("#InfoBadge1").hover(function(){
$("#InfoLogo").hide("puff");
$("#DenmarkMap").show("puff");
}, function(){
$("#DenmarkMap").hide("puff");
$("#InfoLogo").show("puff");
});
这是一个无效的 fiddle
https://jsfiddle.net/ydeLvxx2/
希望你们能帮我解决这个问题。
您不应将悬停的 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");
});
这是一个纯粹的 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="" />
我正在尝试创建一种情况,当您将鼠标悬停在图片上时,它会隐藏一张图片并显示另一张图片。当你悬停时,反之亦然。
我已经尝试使用所有想到的各种悬停效果,如 mouseenter、mouseover、hover 等。
它们都会导致同样的问题。如果我非常坚定并快速地将我的光标拖到操作区域,那么它将给我想要的效果。但是,如果我慢慢地将光标拖到操作区域,那么它会在图像之间跳转几次,然后最终停在正确的图像上。
这看起来很不专业,我希望它能更有效地执行此操作,这样无论我执行得慢还是快,它都只会跳一次。
这是我的脚本:
$("#DenmarkMap").hide();
$("#InfoBadge1").hover(function(){
$("#InfoLogo").hide("puff");
$("#DenmarkMap").show("puff");
}, function(){
$("#DenmarkMap").hide("puff");
$("#InfoLogo").show("puff");
});
这是一个无效的 fiddle https://jsfiddle.net/ydeLvxx2/
希望你们能帮我解决这个问题。
您不应将悬停的 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");
});
这是一个纯粹的 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="" />