javascript - 滚动窗口上的动画菜单栏

标签 javascript jquery css

假设我有一个像这样的导航 div:

  #navigation {
      position:fixed;
      top: 0px;
      left: 0px;
      right: 0px;
      height: 80px;
      background-color: #FFF;
      z-index:999;
      padding-top: 25px;
      padding-left: 45px;
  }

如果用户滚动,我希望将其表现得像 position:absolute 一样,以便它消失在浏览器窗口的顶部。但经过短暂的延迟后,我希望它从顶部滑回到原来的位置。我怎样才能用JS实现这个?

谢谢!

最佳答案

试试这个:

var isInAction = false;
$(window).scroll(function () {
    if (!isInAction){
        isInAction = true;
        $( "#navigation" ).animate({
            top: "-" + $("#navigation").innerHeight() + "px"
        }).delay(1000).animate({
            top: "0px"
        }, 800, function() {
            isInAction = false;
        });;
    }
});

您可以更改.delay(1000)来更改延迟时间。
isInAction 变量的定义是为了防止不断滚动时重复动画。

<强> Check JSFiddle Demo


更新:

如果您想限制此操作仅在向下滚动时,请修改如下代码:

var isInAction = false;
var lastScrollTop = 0;
$(window).scroll(function(event){
   var st = $(this).scrollTop();
   if (st > lastScrollTop){
       if (!isInAction){
           isInAction = true;
           $( "#navigation" ).animate({
               top: "-" + $("#navigation").innerHeight() + "px"
           }).delay(1000).animate({
               top: "0px"
           }, 800, function() {
               isInAction = false;
           });
       }
   }
   lastScrollTop = st;
});

<强> Check JSFiddle Demo

关于javascript - 滚动窗口上的动画菜单栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25591072/

相关文章:

javascript - 仅允许用户在 10 秒后关闭 JavaScript 警报

jquery - 如何在 JavaScript 数组上使用过滤器?

CSS:选择所有从第n个元素开始

javascript - 单击时更改多个按钮颜色

javascript - 如何使用 Javascript 更改 html 标签?

javascript - 使用单选按钮切换谷歌地图中的标记

javascript - 循环遍历数组中的第一层并将其分配给变量

javascript - jQuery 手动调整大小的 DIV

javascript - 没有参数的 jQuery outerHeight() 函数返回对象而不是参数值

javascript - 如何将对象数组映射到具有重复值标识符的数组?