2014-08-28 23 views
2

我有一個div被另一個div覆蓋,我試圖讓窗口底部消失(揭示下面的div),一旦窗口底部大於一半DIV。一旦頂部碰到窗口頂部,我就可以讓它工作,但我從那時起編輯它,它不再工作。當窗口底部通過一個點時,JavaScript會褪色

這裏是一個的jsfiddle例如: http://jsfiddle.net/DnJ2z/676/

這裏是我的JavaScript代碼:

$(document).ready(function() { 
    var scrollBottom = $(window).scrollTop() + $(window).height(); 
    var middleofDiv = $("#redCover").offset().top + (document.getElementById('redCover').clientHeight/2); 
    $(window).scroll(function() { 
     if(scrollBottom > middleofDiv) { //scrolled past the other div? 
      $("#redCover").fadeOut(2000); //reached the desired point -- show div 
     } 
    }); 
    }); 

對於這個例子,我想它,以便當窗口的底部比一半,多綠色div,淡入淡出被觸發。作爲一個側面說明,我有三個Div + coveredDiv在頁面上,所有的類「背景」和「封面」。如果我能得到這個Javascript的工作,是否有辦法使它適用於所有的類而不是單個元素?

感謝您的幫助!

+0

你在你的小提琴中有無效的標記(關閉div標籤的錯誤順序),我已經[更新](http://jsfiddle.net/DnJ2z/677/)它 – 2014-08-28 19:42:27

+0

你的「更新」一個似乎並不對,對不起。它同時顯示所有3個div。 – Acoustic77 2014-08-28 19:57:41

+1

哦,我的壞!我不明白這個問題,絕不會這樣。 – 2014-08-28 19:59:17

回答

1

你的問題是,scrollTop()是不同的,這取決於你滾動到哪裏。你正在運行它onload,所以它總是一樣的。它需要在您的scroll事件中運行。試試這個:

$(function(){ 
    var rC = $('#redCover'), middleofDiv = rC.offset().top + (rC.height()/2); 
    $(window).scroll(function(){ 
    if($(window).scrollTop() + $(window).height() > middleofDiv){ 
     //scrolled past the other div? 
     rC.fadeOut(2000); //reached the desired point -- show div 
    } 
    }); 
}); 

Fiddle

按照承諾:

$(window).scroll(function(){ 
    var sT = $(window).scrollTop(), wH = $(window).height(); 
    $('.color').each(function(){ 
    var ths = $(this); 
    if(sT + wH > ths.offset().top + (ths.height()/2)){ 
     ths.fadeOut(2000); 
    }; 
    }); 
}); 

Fiddle

注意,你確實有#greenDiv周圍#redCover

+0

這很有效,但我必須用雙引號和十八制將('redCover')更改爲(「#redCover」)。這是爲什麼?這兩者在JavaScript中有什麼區別? – Acoustic77 2014-08-28 19:55:05

+1

已修復。當頁面加載時,您將獲得'$(window).scrollTop()'。雙引號只需要按shift鍵(更多工作輸入 - 你也應該成爲Dvorak打字員),所以我儘可能使用單引號。如果我正在使用JavaScript或PHP編寫一堆HTML,則在外部使用雙引號,並在HTML屬性中使用單引號。 JavaScript中只有速度差異,因爲服務器不是用雙引號解釋事情。 – PHPglue 2014-08-28 20:03:55

+1

不,你必須在jQuery中使用'#'符號來'document.getElementById()'。 jQuery使用CSS選擇器。 – PHPglue 2014-08-28 20:06:40