jQuery mousemove:仅当鼠标移动时才显示导航栏

jQuery mousemove:仅当鼠标移动时才显示导航栏,jquery,mousemove,Jquery,Mousemove,我已经知道如何让导航条出现在mousemove上,但我很难知道如何在鼠标停止移动后让导航条再次消失 CSS JavaScript $(document).mousemove(function(event) { $("nav").css("display", "block"); }); 我相信有一个简单的解决办法,但我已经寻找了一段时间,但没有结果 谢谢 您可以在鼠标移动时注册鼠标停止事件,并在调用该事件后将其删除。因为您使用的是jQuery,所以还可以使用.show()和.hid

我已经知道如何让导航条出现在mousemove上,但我很难知道如何在鼠标停止移动后让导航条再次消失

CSS

JavaScript

$(document).mousemove(function(event) {     
  $("nav").css("display", "block");
});
我相信有一个简单的解决办法,但我已经寻找了一段时间,但没有结果


谢谢

您可以在鼠标移动时注册鼠标停止事件,并在调用该事件后将其删除。因为您使用的是jQuery,所以还可以使用.show()和.hide()而不是直接更改css。您可以获得鼠标停止事件的插件

如果您决定使用.show和.hide,您应该看看api文档。有了一些额外的参数,你可以轻松地显示和隐藏一个好的动画,而不是瞬间出现和消失


您可以在鼠标移动时注册鼠标停止事件,并在调用该事件后将其删除。因为您使用的是jQuery,所以还可以使用.show()和.hide()而不是直接更改css。您可以获得鼠标停止事件的插件

如果您决定使用.show和.hide,您应该看看api文档。有了几个额外的参数,你可以很容易地显示和隐藏一个漂亮的动画,而不是一个瞬间出现和消失


在jQuery中,mousemove结束时没有本机事件, 但是您可以在internet上使用一些用于mousestop的jQuery插件,比如

然后,您可以这样做:

$(document).mousemove(function(event){     
    $("nav").show();
});

$(document).mousestop(function(e) {
    $("nav").hide();
});
var timer;

$(window).on('mousemove', function () {
  $('nav').addClass('show');
  try {
    clearTimeout(timer);
  } catch (e) {}
  timer = setTimeout(function () {
    $('nav').removeClass('show');
  }, 50);
});
nav {
  background: #333;
  color: #fff;
  visibility: hidden;
  opacity: 0;
  transition: all .5s ease;
}

nav.show {
  opacity: 1;
  visibility: visible;
}

jQuery中没有用于mousemove结束的本机事件, 但是您可以在internet上使用一些用于mousestop的jQuery插件,比如

然后,您可以这样做:

$(document).mousemove(function(event){     
    $("nav").show();
});

$(document).mousestop(function(e) {
    $("nav").hide();
});
var timer;

$(window).on('mousemove', function () {
  $('nav').addClass('show');
  try {
    clearTimeout(timer);
  } catch (e) {}
  timer = setTimeout(function () {
    $('nav').removeClass('show');
  }, 50);
});
nav {
  background: #333;
  color: #fff;
  visibility: hidden;
  opacity: 0;
  transition: all .5s ease;
}

nav.show {
  opacity: 1;
  visibility: visible;
}

您可以使用这样的超时系统:

$(document).mousemove(function(event){     
    $("nav").show();
});

$(document).mousestop(function(e) {
    $("nav").hide();
});
var timer;

$(window).on('mousemove', function () {
  $('nav').addClass('show');
  try {
    clearTimeout(timer);
  } catch (e) {}
  timer = setTimeout(function () {
    $('nav').removeClass('show');
  }, 50);
});
nav {
  background: #333;
  color: #fff;
  visibility: hidden;
  opacity: 0;
  transition: all .5s ease;
}

nav.show {
  opacity: 1;
  visibility: visible;
}
使用以下样式:

$(document).mousemove(function(event){     
    $("nav").show();
});

$(document).mousestop(function(e) {
    $("nav").hide();
});
var timer;

$(window).on('mousemove', function () {
  $('nav').addClass('show');
  try {
    clearTimeout(timer);
  } catch (e) {}
  timer = setTimeout(function () {
    $('nav').removeClass('show');
  }, 50);
});
nav {
  background: #333;
  color: #fff;
  visibility: hidden;
  opacity: 0;
  transition: all .5s ease;
}

nav.show {
  opacity: 1;
  visibility: visible;
}

50ms可根据您想要的灵敏度进行调整。

您可以使用如下超时系统:

$(document).mousemove(function(event){     
    $("nav").show();
});

$(document).mousestop(function(e) {
    $("nav").hide();
});
var timer;

$(window).on('mousemove', function () {
  $('nav').addClass('show');
  try {
    clearTimeout(timer);
  } catch (e) {}
  timer = setTimeout(function () {
    $('nav').removeClass('show');
  }, 50);
});
nav {
  background: #333;
  color: #fff;
  visibility: hidden;
  opacity: 0;
  transition: all .5s ease;
}

nav.show {
  opacity: 1;
  visibility: visible;
}
使用以下样式:

$(document).mousemove(function(event){     
    $("nav").show();
});

$(document).mousestop(function(e) {
    $("nav").hide();
});
var timer;

$(window).on('mousemove', function () {
  $('nav').addClass('show');
  try {
    clearTimeout(timer);
  } catch (e) {}
  timer = setTimeout(function () {
    $('nav').removeClass('show');
  }, 50);
});
nav {
  background: #333;
  color: #fff;
  visibility: hidden;
  opacity: 0;
  transition: all .5s ease;
}

nav.show {
  opacity: 1;
  visibility: visible;
}

50ms可根据您想要的灵敏度进行调整。

它需要以多快的速度消失?就在它停止移动之后?为什么不做一个
setTimeout
,2-3秒后它会自动消失呢。该网页一直在跟踪鼠标是否在移动,因此除非用户闲置超过您选择的时间,否则它不会消失。@aug我刚刚发布了一个类似于您建议的50毫秒超时的解决方案。它需要多快消失?就在它停止移动之后?为什么不做一个
setTimeout
,2-3秒后它会自动消失呢。该网页不断跟踪鼠标是否在移动,因此除非用户闲置超过您选择的时间,否则它不会消失。@aug我刚刚发布了一个类似于您建议的50毫秒超时的解决方案。这很有效,谢谢。现在只想找到一种方法让它更平滑地出现和消失…@user1912899如果你想让它更平滑,我会创建一个具有可见状态的类,并在其上使用CSS转换。然后切换该类。我不认为您可以将
display:none
转换为
display:block
,但是
可见性:hidden
不透明度
是可行的选择。@user1912899我已经更新了我的答案,让用户更容易(转换)。为简洁起见,供应商前缀的左边。太好了,非常感谢。但是.fadeIn()和.fadeOut()呢?这难道不容易吗?@user1912899
.fadeIn()
.fadeOut()
将起作用,但每次退换时,您可能都必须调用
.stop()
。CSS在默认情况下处理得很好。这很有效,谢谢。现在只想找到一种方法让它更平滑地出现和消失…@user1912899如果你想让它更平滑,我会创建一个具有可见状态的类,并在其上使用CSS转换。然后切换该类。我不认为您可以将
display:none
转换为
display:block
,但是
可见性:hidden
不透明度
是可行的选择。@user1912899我已经更新了我的答案,让用户更容易(转换)。为简洁起见,供应商前缀的左边。太好了,非常感谢。但是.fadeIn()和.fadeOut()呢?这不是更容易吗?@user1912899
.fadeIn()
.fadeOut()
可以工作,但每次淡入淡出时,您可能必须调用
.stop()
。默认情况下,CSS只会很好地处理它。