如何在向下滚动页面时使导航栏改变颜色?

我希望导航栏是透明的,但是当您向下滚动页面时,它会变为红色,例如。

 

像这样的东西:

http://jsfiddle.net/qrhjdfmd/

 var a = $(".nav").offset().top; $(document).scroll(function(){ if($(this).scrollTop() > a) { $('.nav').css({"background":"red"}); } else { $('.nav').css({"background":"transparent"}); } }); 

如果有人想要一个非jquery解决方案(vanilla js),这里是:

 document.addEventListener("DOMContentLoaded", function () { var scrollStart = 0; var nav = document.querySelector(".nav"); var offset = navbarElement.getBoundingClientRect(); document.onscroll = function (e) { scrollStart = e.target.scrollingElement.scrollTop; if (scrollStart > offset.top) { nav.style.background-color, rgba(34,34,34,0.9); } else { nav.style.background-color = "transparent"; } }; }); 

OP解决方案。

jQuery的

 $(document).ready(function(){ var scroll_start = 0; var startchange = $('.nav'); var offset = startchange.offset(); $(document).scroll(function() { scroll_start = $(this).scrollTop(); if(scroll_start > offset.top) { $('.nav').css('background-color', 'rgba(34,34,34,0.9)'); } else { $('.nav').css('background-color', 'transparent'); } }); }); 

CSS

 .nav { transition-duration: 1s; } 

这应该使您的导航透明,滚动时它将更改为rgba(34,34,34,0.9)