2014-12-04 29 views
1

基本上在我的網站上,我有一個粘性導航具有透明背景。在那之下我有淺或深色的內容divs。基於div下面的顏色更改粘貼的導航顏色

我想要實現的是,當您滾動時,javascript函數正在主動確定粘性導航是基於div的類名(或數據屬性,無論哪一個) ,並改變粘滯導航文本的顏色,以便在內容div上可見。

Fiddle

目前我沒有任何JavaScript開始作爲我不知道如何來檢測,如果一個DIV是另一些人。但正如你所看到的,一旦粘性導航結束了黑暗的內容div,我需要將字體顏色更改爲更淺的顏色,一旦它返回到淺色內容div,我需要將顏色更改爲更深的顏色。

示例HTML:

<div id="sticky">Menu</div> 
<div class="content light"></div> 
<div class="content dark"></div> 
<div class="content light"></div> 
<div class="content dark"></div> 
<div class="content light"></div> 

提前感謝!

+0

這可能是有用的:http://stackoverflow.com/questions/19661108/detect-element-if-over-another-element-via- using-css3-transform – 2014-12-04 16:27:57

回答

3

小提琴工作:

http://jsfiddle.net/bbazcyc8/1/

var stickyOffset = $("#sticky").offset(); 
var $contentDivs = $(".content"); 
$(document).scroll(function() { 
    $contentDivs.each(function(k) { 
     var _thisOffset = $(this).offset(); 
     var _actPosition = _thisOffset.top - $(window).scrollTop(); 
     if (_actPosition < stickyOffset.top && _actPosition + $(this).height() > 0) { 
      $("#current").html("Current div under sticky is: " + $(this).attr("class")); 
      $("#sticky").removeClass("light dark").addClass($(this).hasClass("light") ? "light" : "dark"); 
      return false; 
     } 
    }); 
}); 

<div> 
    <div id="sticky">Menu <span id="current"></span></div> 
    <div class="content light"></div> 
    <div class="content dark"></div> 
    <div class="content light"></div> 
    <div class="content dark"></div> 
    <div class="content light"></div> 
</div> 
+0

This works!但有一個問題,只有在導航覆蓋了1/2的情況下才有改變類的方法,所以它在文本的中心位置發生了變化。更新小提琴:http://jsfiddle.net/tenold/bbazcyc8/3/ – Corey 2014-12-04 17:05:36

+1

這是我做了什麼,如果有人感興趣,我會讓類在粘性導航的中心發生變化:http://jsfiddle.net/tenold/ bbazcyc8/5/ – Corey 2014-12-04 18:02:40

+0

對不起,我剛看到評論。是的,你的解決方案是好的;)很高興提供幫助 – Cito 2014-12-04 20:27:27