2014-09-25 68 views
0

我走到這一步,這樣的代碼:JQuery的fadeTo()

$(window).scroll(function() { 
    if ($(this).scrollTop() > 400) { 
     $(".top-bg").fadeTo("slow", 0.99); 
    } 

的想法是低透明度菜單,當我向下滾動,它消失在,但問題是,我不能把它帶回來到低透明度(0.7),當我滾動回< 400.

我一直在四處搜尋,我沒有找到我的解決方案。

有什麼想法?

在此先感謝。

+2

寫多了一個條件,如果<400那麼不透明度你想要什麼。 – Gowri 2014-09-25 12:30:47

+0

而且每當窗口滾動時(您當前),您都不想重複'fadeTo',但只有當它從* <= 400' to '> 400'穿過邊界*或返回。 – 2014-09-25 12:31:25

+0

如果以下答案中的任何一個*回答了您的問題,那麼您將通過單擊旁邊的複選標記來「接受」答案;更多:http://stackoverflow.com/help/someone-answers但只有當你的問題是真的回答。 – 2014-09-25 13:09:46

回答

1

那裏有幾個問題。首先,你永遠不會檢查scrollTop是否爲<= 400,所以當然不會返回。

第二個是,即使您使用的是代碼,即使已經是> 400,您也會不斷重新應用fadeTo,任何時候窗口都會滾動。

var fadedIn = false; 
$(window).scroll(function() { 
    var thisScroll = $(this).scrollTop(); 
    if (thisScroll > 400 && !fadedIn) { 
     $(".top-bg").fadeTo("slow", 0.99); 
     // Or with a stop: $(".top-bg").stop().fadeTo("slow", 0.99); 
     fadedIn = true; 
    } else if (thisScroll <= 400 && fadedIn) { 
     $(".top-bg").fadeTo("slow", 0.7); 
     // Or with a stop: $(".top-bg").stop().fadeTo("slow", 0.7); 
     fadedIn = false; 
    } 
}); 
+0

這就是我正在尋找的。謝謝 – azhpo 2014-09-25 12:38:11

+0

@ user1879457:很高興幫助。在每個'.fadeTo'之前,你可能需要一個'.stop()'。 – 2014-09-25 13:08:54

0

嘗試這樣

$(window).scroll(function() { 
    if ($(this).scrollTop() > 400) { 
     $(".top-bg").fadeTo("slow", 0.99); 
    }else if($(this).scrollTop() <= 400) 
{ 
     $(".top-bg").fadeTo("slow", 0.7); 
} 
+0

什麼會不斷重新觸發適當的淡入淡出。 – 2014-09-25 13:03:56