粘滞标题在滚动时无法正常工作

时间:2017-04-28 18:31:33

标签: javascript jquery css header sticky

我试图获得一个粘性标题,直到你滚动超过100-150px才会发生任何事情。而不是在向上滚动时,它会被显示出来,当向下滚动到页面顶部时,它会再次隐藏并再次返回到它的原始状态。

这是我想要的确切外观/感觉

https://medium.com/@heykylehey/making-the-practice-print-6c8292934932

这是指向我的开发网站的链接

http://www.alexcoven.com/dev/element/

使用此脚本

  var $body = $("body");
  var $wrapperTop = $(".sticky-container");
  var lastScrollTop = 0;
  $(window).scroll(function(event){
     var st = $(this).scrollTop();
     if(st < 100){
         $body.removeClass("header--fixed-up header--fixed");
         $wrapperTop.removeClass("animated fadeOutUp");
     }
     if(st < lastScrollTop) {
         $body.addClass("header--fixed-up header--fixed");
         $wrapperTop.removeClass('fadeOutUp').addClass("animated fadeInDown");
     } else if((st > lastScrollTop) && (st > 100)) {
         $wrapperTop.removeClass('fadeInDown').addClass("animated fadeOutUp");
     }
     lastScrollTop = st;
  });

这需要今天推出,而且我很紧张。在这个问题上请帮助 非常爱!

3 个答案:

答案 0 :(得分:0)

$(window).scroll(function(event){
 var st = $(this).scrollTop();
 if(st < 100){
     $body.removeClass("header--fixed-up header--fixed");
     $wrapperTop.removeClass("animated fadeOutUp");
 }else if(st < lastScrollTop) {
     $body.addClass("header--fixed-up header--fixed");
     $wrapperTop.removeClass('fadeOutUp').addClass("animated fadeInDown");
 } else if((st > lastScrollTop) && (st > 100)) {
     $wrapperTop.removeClass('fadeInDown').addClass("animated fadeOutUp");
 }
 lastScrollTop = st;
});

答案 1 :(得分:0)

不能100%工作

  var $body = $("body");
  var $wrapperTop = $(".sticky-container");
  var lastScrollTop = 0;
  $(window).scroll(function(event){
     var st = $(this).scrollTop();
     if(st < 100){
         $body.removeClass("header--fixed-up header--fixed");
         $wrapperTop.removeClass("animated fadeOutUp");
     }
     if((st < lastScrollTop) && (st > 100)) {
         $body.addClass("header--fixed-up header--fixed");
         $wrapperTop.removeClass('fadeOutUp').addClass("animated fadeInDown");
     } else if((st > lastScrollTop) && (st > 100)) {
         $wrapperTop.removeClass('fadeInDown').addClass("animated fadeOutUp");
         //$body.removeClass("header--fixed-up header--fixed");
     }
     lastScrollTop = st;
  });

我把它靠近了,但是当我回到页面顶部时仍然存在问题。

添加

&& (st > 100))

到这一行

if((st < lastScrollTop) && (st > 100))

现在正在更改该行,如果您向上滚动并且在页面上执行超出100px而不是向上滚动执行;)

答案 2 :(得分:0)

终于修好了!

var $body = $("body");
      var $wrapperTop = $(".sticky-container");
      var lastScrollTop = 0;
      $(window).scroll(function(event){
         var st = $(this).scrollTop();
         if(st < 3){
             $body.removeClass("header--fixed-up header--fixed");
             $wrapperTop.removeClass("animated fadeInDown fadeOutUp");
         }
         if((st < lastScrollTop) && (st > 100)) {
             $body.addClass("header--fixed-up header--fixed");
             $wrapperTop.removeClass('fadeOutUp').addClass("animated fadeInDown");
         } else if((st > lastScrollTop) && (st > 100)) {
             $wrapperTop.removeClass('fadeInDown').addClass("animated fadeOutUp");
         }
         lastScrollTop = st;
      });

我将第一个if语句的值更改为st&lt; 3,当你在没有打嗝的页面顶部的背面做填充时,它会返回到它的原点。