javascript - 在导航栏上切换不透明度动画

标签 javascript jquery scroll jquery-animate opacity

目标:当到达滚动条上的某个位置时,为导航栏提供不透明度。 到目前为止,它可以在加载时工作,但是当向上滚动时,不透明度不会返回到 0。

 function navanim() {
  var window_top = $(window).scrollTop();
  var div_top = $('#news').offset().top;
  if (window_top > 500)

      $('.nav').animate({
          'opacity': '1'
      }, 500);
  else 

      $('.nav').css("opacity", 0);

  }
  $(function() {
  $(window).scroll(navanim);
  navanim();

  });

最佳答案

在尝试了您的代码之后,问题似乎可能与 animate、css 和可能的其他方法(在每次滚动时)调用过于频繁有关。

我根据你的想法重新实现了一个小例子:

Simple example

上面的 jsfiddle 使用以下函数通过跟踪状态来检查是否需要动画,如果需要则执行该动画。

var navAnimation = (function() {
    var news = $('#news'),
      header = $('header'),
      winTop = $(window).scrollTop(),
      newsTop = news.offset().top,
      show = winTop < newsTop;

    return function navAnimation () { 
      winTop = $(window).scrollTop(),
      newsTop = news.offset().top;

      // Don't run uneccissarily
      if (show && winTop < newsTop) return;
      if (!show && winTop >= newsTop) return;

      // If something changed, update our state
      show = winTop < newsTop;

      if (show) {
        console.log('animate!');
        header.animate({
          opacity: 1
        }, 500);
      } else {
        header.animate({
            opacity: 0
        }, 500);
      }
    };
})();

$( document ).ready(function(){
  $( window ).scroll(navAnimation);
  navAnimation();
});

关于javascript - 在导航栏上切换不透明度动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33683427/

相关文章:

jquery - IE 中缓慢的 jQuery 动画

javascript - scrollMagic - 如何滚动到正确的位置?

C# 有没有办法设置控制台应用程序的滚动位置

javascript - 如何在 chrome 控制台中完全打印大数组?

javascript - 使用javascript切换元素会使元素显得太小,直到我调整浏览器大小为止

javascript - 获取图像实际大小 JS/Jquery

javascript - 使用 jQuery fadeIn 还是 CSS3 动画更好?

html - 管理 jquery 附加数据上的页面滚动

javascript - 允许我设置天气类型的JS

javascript - AngularJS - 如何使用另一个数组对 ng-repeat 进行排序