2014-09-20 74 views
4

我想問一下,是否有方法使用jQuery animate()方法爲窗口滾動上的水平導航欄的頂級屬性設置動畫效果。如何在窗口滾動上動畫導航欄

下面是代碼我使用:

window.addEventListener("scroll", function() { 
if (window.scrollY > 200) { 
    $('#navbar').css({top:"100px"}); 
} 
else { 
    $('#navbar').css({top:"0px"}); 
} 
},false); 

CSS:

#navbar{ 
top:0; 
position:fixed; 
transition: top 0.5s; 
} 

當向下滾動200像素導航欄改變其頂部位置,從0到100像素; 這工作得很好,但如果我改變方法,並把.animate代替的CSS的,

$('#navbar').animate({top:"100px"});  

它停止工作。任何想法爲什麼?

+0

這可以通過使用CSS3轉換來實現。 http://stackoverflow.com/questions/20185001/transitioning-affixed-navigation-bar-css – Harshadewa 2014-09-20 18:44:04

+0

請參閱更新我的第二個鏈接。 – Modder 2014-09-20 18:57:39

回答

7

您可以用CSS transition做到這一點,你可以如何實現這一目標是使用jQuery addClass代替css()

DEMO

$(window).on('scroll', function() { 
    if ($(this).scrollTop() > 200) { 
     if (!$('.navbar').hasClass('expand')) { 
      $('.navbar').addClass('expand'); 
     } 
    } else { 
     if ($('.navbar').hasClass('expand')) { 
      $('.navbar').removeClass('expand'); 
     } 
    } 
}); 


.navbar { 
    top: 0; 
    position: fixed; 
    transition: top 0.5s; 
} 

.navbar.expand { 
    top: 100px; 
}