2016-11-14 3 views
0

У меня есть меню, которое анимируется в виде (сверху), когда пользователь прокручивается вверх. И анимируется (за пределами экрана), когда пользователь прокручивается вниз. Тем не менее, я хочу, чтобы фон навигации был черным, когда пользователь находится в верхней части страницы, и белый, когда они находятся на некотором расстоянии от вершины.изменение фонового цвета меню, когда в верхней части экрана

HTML-фрагмент (рабочий код)

... 
function hasScrolled() { 
if($(window).width() > 768) { 
    var st = $(this).scrollTop(); 
    if (Math.abs(lastScrollTop - st) <= delta) 
     return; 

    if (st > lastScrollTop && st > navbarHeight) { 

     // Scroll Down 
     $('#s-nav').removeClass('nav-down').addClass('nav-up'); 

    } else { 

     // Scroll Up 
     if (st + $(window).height() < $(document).height()) { 
      $('#s-nav').removeClass('nav-up').addClass('nav-down'); 
     } 
    } 
    } else { 
    $('#s-nav').removeClass('nav-up').addClass('nav-down'); 
    } 

HTML

<nav id="s-nav" class="row nav-down"> 
    ... nav menu ... 
</nav> 

CSS

#s-nav { 
position: fixed; 
z-index: 999; 
background-color: #fff; 
top: 0; left: 0; 
width: 100%; 
transition: top 0.5s ease; 
} 
#s-nav.nav-up { top: -75px; } 
+0

Можете ли вы предоставить любую рабочую 'snippet' или' fiddle'? –

+0

Большая часть контента создается через wordpress. Snippet не распознает код, когда я пытаюсь использовать – user3550879

+0

, поскольку вы переключаете классы во время прокрутки, тогда вы можете использовать эти классы для переключения 'bg-color'. –

ответ

1

Что-то вроде этого.

$(window).scroll(function() { 
 
    var scroll = $(window).scrollTop(); 
 
    if (scroll >= 200) { 
 
    $("#s-nav").addClass('white_bg'); 
 
    } else $("#s-nav").removeClass('white_bg'); 
 
});
body { 
 
    background: #f1f1f1; 
 
    height: 1000px; 
 
} 
 
.nav-down { 
 
    height: 30px; 
 
    width: 100%; 
 
    border: 1px solid #ddd; 
 
    position: fixed; 
 
    background: #000; 
 
    color: #ff0; 
 
} 
 
.white_bg{ 
 
    background: #000; 
 
    color:#fff; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<nav id="s-nav" class="row nav-down"> 
 
    ... nav menu ... 
 
</nav>

+0

Итак, я могу добавить этот код после текущего? – user3550879

+0

Дополнительный вопрос: может ли это быть сделано так, чтобы css не был жестко закодирован, а вместо этого применил класс css? а также как добавить второй класс к другому внутреннему div. (и т. д., когда фон белый, я изменил текст на черный) – user3550879

+1

Идеально, чтобы он работал, спасибо – user3550879

Смежные вопросы