根据下面的div颜色更改粘性导航颜色

时间:2014-12-04 16:09:38

标签: javascript jquery html css

基本上在我的网站上,我有一个透明背景的粘性导航。下面我有浅色或深色内容div。

我想要实现的是当您滚动时,javascript函数正在根据该div的类名(或数据属性,无论哪个)主动确定粘性导航是否位于浅色或深色内容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>

提前致谢!

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

kabooya,大家好。 我为您找到了这个: http://jsfiddle.net/Niffler/z34cG/

尝试添加此内容

$(window).scroll(function() {

    /* get current scroll-position within window */
    var scroll = $(window).scrollTop();
    
    $('.mainLeft li').each(function() {

        /* get position of navigation-element (distance from top minus half of it's height, so that it changes color while it's half over black and half over white background) */
        var elementPositionTop = parseFloat($(this).offset().top) + (parseFloat($(this).height() / 2));

        /* change color for each background-change */
        if (elementPositionTop >= 320 && elementPositionTop <= 640 || elementPositionTop >= 960 && elementPositionTop <= 1280) {
            $(this).addClass('whiteText');
        } else {
            $(this).removeClass('whiteText');
        }
    });
});