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

Toggle opacity animation on nav bar

本文关键字:不透明度 动画 导航      更新时间:2023-09-26

目标:当到达滚动上的某个位置时,给导航栏不透明度。到目前为止,它在加载时工作,但当向上滚动时,不透明度不会回到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和其他可能被频繁调用的方法有关(每次滚动)。

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

的简单示例

上面的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();
});