鼠标输入/鼠标离开产生闪烁效果
Mouseenter / Mouseleave creates flickering effect
>我有一个黑色图标,当光标悬停在它上面时,我想把它变成蓝色。如果我保持光标静止,它确实会变成蓝色,但是如果我移动它,图标开始闪烁蓝色和黑色。我做了一个jfidd来说明:
http://jsfiddle.net/8t2whdop/3/
这是我看到的代码:
<%= image_tag("IconBlack.png", class: "link", id: "icon-black") %>
<%= image_tag("IconBlue.png", class: "link", id: "icon-blue") %>
<script type="text/javascript">
$('#icon-blue').hide();
$('#icon-black').mouseenter(function () {
$('#icon-black').hide();
$('#icon-blue').show();
});
$('#icon-black').mouseleave(function () {
$('#icon-black').show();
$('#icon-blue').hide();
});
</script>
显然,考虑到类似问题的数量,这是鼠标输入/离开的常见问题。但是,这不是重复的,因为我尝试了找到的所有解决方案,但没有一个可以解决我的特定问题。例如,我尝试了鼠标悬停/出/输入/离开/切换/悬停的所有不同组合。如何停止闪烁效果?
只需使用正确的选择器$('#icon-blue').mouseleave
演示
$('#icon-blue').hide();
$('#icon-black').mouseenter(function () {
$('#icon-black').hide();
$('#icon-blue').show();
});
$('#icon-blue').mouseleave(function () { // the #icon blue!!!
$('#icon-black').show();
$('#icon-blue').hide();
});
另请注意,您需要的可以在纯CSS中完成
在任何一种情况下,如果你将图标包装在一个公共的父元素中,那么为这些东西编写JS和CSS会更容易 - 因为,你所需要的只是定位:hover
或jQ .hover()
该父元素。
首先,你可以只用CSS来做这件事,不需要JS:
http://jsfiddle.net/8t2whdop/7/
.HTML
<div id="icon">
</div>
.CSS
#icon{
height: 60px;
width: 60px;
background: black;
}
#icon:hover{
background: blue;
}
然后,我将解释为什么您的代码会给出以下结果(预期):
当您将鼠标悬停在黑色图标上时,您在其上调用 jQuery hide
方法,该方法在黑色图标上设置display: none;
(几毫秒后),从而触发mouseleave
事件。所以它会立即再次显示黑色图标,触发mouseenter
事件等等......
如果你不想(或需要)用JS来做这件事,你可以使用包装器div来捕获事件(但即便如此,为每个背景使用两个不同的div也是没有效率的):
.HTML
<div id="icon">
<div id="icon-black"></div>
<div id="icon-blue"></div>
</div>
.JS
$('#icon-blue').hide();
$('#icon').mouseenter(function () {
$('#icon-black').hide();
$('#icon-blue').show();
});
$('#icon').mouseleave(function () {
$('#icon-black').show();
$('#icon-blue').hide();
});
见小提琴:
http://jsfiddle.net/8t2whdop/6/
我认为使用css可以更好地解决这个问题,如果您只想在悬停时更改颜色
#icon{
height: 60px;
width: 60px;
background-color: black;
}
#icon:hover{
background-color: blue;
}
如果需要更改框的图像:
#icon{
height: 60px;
width: 60px;
background-image: url("IconBlack.png");
}
#icon:hover{
background-image: url("IconBlue.png");
}
相关文章:
- Javascript拉斐尔奇怪的闪烁发生在我鼠标悬停的第三次
- 鼠标指针和鼠标左键闪烁
- 当我将鼠标悬停在iframe上时,DIV会闪烁
- jQuery-鼠标输入闪烁图像
- 更改元素父元素的背景颜色时停止在
上闪烁鼠标悬停?jQuery/JS. - 当鼠标悬停在其上时,Div 会闪烁
- 下拉导航 - 鼠标离开时菜单闪烁
- 鼠标输入/鼠标离开产生闪烁效果
- 鼠标指针在拖动事件中一直闪烁
- 鼠标输入时跨度闪烁
- jQuery弹出菜单在鼠标快速转换时闪烁
- 谷歌地图-标记在鼠标悬停前闪烁
- 鼠标经过时图像闪烁
- 鼠标悬停状态闪烁
- 鼠标闪烁,鼠标左键延迟,按钮列表
- Javascript鼠标悬停元素闪烁;未捕获的类型错误
- jQuery框fadeOut/fadeIn在鼠标离开后闪烁
- 为什么用鼠标滚轮滚动时背景会闪烁
- 鼠标悬停/鼠标离开,鼠标进入/鼠标离开,鼠标悬停闪烁问题
- 鼠标悬停时闪烁文本