2014-10-02 53 views
0

我做了一個自動隱藏的導航欄,它在Chrome中工作得很好,但是IE11嚇壞了。這個想法是,當你向下滾動它隱藏時,如果你向上滾動,它會再次出現。在IE11中,我向下滾動並隱藏了導航欄。然後當我滾動回來沒有任何事情發生一秒鐘......然後導航欄快速連續出現並消失3次......然後在幾秒鐘後再次完成。任何想法有什麼不對?在IE中工作的自動隱藏導航欄

<script> 
var lastScrollTop = 0; 


$(window).scroll(function(){ 

    var st = $(this).scrollTop(); 
    if (st > lastScrollTop){ 
     $('#header').animate({ marginTop: '-70px', opacity: 0 }, 200);  
    } else { 
     $('#header').animate({ marginTop: '0px', opacity: 1 }, 200); 
    } 
    lastScrollTop = st; 
}); 
</script> 

回答

0

Onscroll發生了一堆事情,所以你要讓它動畫一堆。

要麼停止與停止()動畫

$('#header').stop().animate(...); 

或檢測如果動畫。

$('#header').not(":animated").animate(...); 
+0

我嘗試了兩種選擇,都沒有爲我工作。感謝您的建議,雖然 – user2874270 2014-10-02 01:10:46

0

我認爲應該儘量不使用動畫,滾動將捕獲的行動多次,所以用的.css取代

的Javascript:

$(function(){ 

    var start = 0; 
    var end; 
    $(window).scroll(function(){ 
     end = $(this).scrollTop(); 
     if (end > start){ 
      $('#header').css({marginTop: '-70px', opacity: 0 });  
     } else { 
      $('#header').css({ marginTop: '0px', opacity: 1 }); 
     } 
     start = end; 
    }); 

}); 

CSS:

body{margin:0;height:2000px;} 
#header{width:100%;position:fixed;height:70px;line-height:70px;background:red;top:0;left:0;} 
+0

感謝您的建議,但是當我嘗試這個並在IE瀏覽器中滾動,導航欄消失並右後方 – user2874270 2014-10-02 01:10:30

+0

它在我的IE 9和10瀏覽器中發現。如果你需要更多的信息,你可以閱讀這個https://medium.com/@mariusc23/hide-header-on-scroll-down-show-on-scroll-up-67bbaae9a78c – hunteryxx 2014-10-02 02:40:53