鼠标移动时显示/隐藏元素
Show / hide elements on mouse move
我正在构建一个网站,希望在移动鼠标之前隐藏某些部分。当鼠标移动时,它们仍然可见,但是,如果鼠标静止几秒钟,它们就会再次隐藏起来。
我在网站上使用jQuery,在我准备好的状态下,我有:
var hide = setTimeout(function() {
hideNav();
}, 2000);
$('body').mousemove(function() {
clearTimeout(hide);
var hide = setTimeout(function() {
hideNav();
}, 2000);
showNav();
});
以及显示/隐藏内容的功能
function hideNav() {
$('#primary').fadeOut(1000);
var lightbox = $('#lightbox');
if (lightbox.length) {
lightbox.fadeOut(1000);
}
}
function showNav() {
$('#primary').fadeIn(1000);
var lightbox = $('#lightbox');
if (lightbox.length) {
lightbox.fadeIn(1000);
}
}
这种方法很有效,只是隐藏元素的超时最终会与鼠标移动时显示元素的功能发生冲突,导致大量闪烁。
编辑:鼠标移动需要针对页面上的任何位置,而不仅仅是当鼠标悬停在要显示/隐藏的元素上时。
如有任何帮助,我们将不胜感激。
感谢
尝试使用$.stop
http://api.jquery.com/stop/
如果它在你移动鼠标时处于淡出的1秒内,它应该停止淡出的动画并重新淡出。
function hideNav() {
$('#primary').stop().fadeOut(1000);
var lightbox = $('#lightbox');
if (lightbox.length) {
lightbox.fadeOut(1000);
}
}
function showNav() {
$('#primary').stop().fadeIn(1000);
var lightbox = $('#lightbox');
if (lightbox.length) {
lightbox.fadeIn(1000);
}
}
此外,我将从mousemove
函数中的var hide = ...
中删除var
。如果hide
是一个全局变量,只需在mousemove中重用它(不需要重新声明)。
相关文章:
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- JavaScript-在手机上不工作的情况下,在外部单击时隐藏元素
- 随时隐藏元素
- 根据特定条件使用ng显示/ng隐藏来显示/隐藏元素
- 隐藏元素直到加载完成(ng斗篷不是我需要的)
- 在具有类的元素中隐藏元素
- javascript()onclick隐藏元素-dos'我不在firefox工作
- JQueryHide()在按钮中使用元素时不会隐藏元素
- 使用Javascript取消隐藏元素
- 如果鼠标离开父对象,则隐藏元素
- 如何在jquery ajax成功html响应中找到输入隐藏元素
- 基于事件在循环中隐藏元素
- 渐进式增强-不使用CSS隐藏元素
- 隐藏元素后更新滚动条
- jQuery没有隐藏元素
- jQuery隐藏元素在使用CSS显示时保持隐藏状态
- 如何使用javascript在区域外单击时隐藏元素
- 如何在加载网页时隐藏元素
- JS:隐藏元素上的事件侦听器
- HTML 显示/隐藏元素 JS 不起作用