jquery更改背景颜色用户滚动

是否有可能使用jquery当用户向下滚动页面时背景动画从50%白色变为90%白色或某些?

首先它是颜色rgba(255,255,255,.5) ,当用户在颜色下方滚动210px时become rgba(255,255,255,.9)

在这里你去(当你滚动超过210px时,这将把页面颜色改为蓝色,如果你再回来,它将恢复为红色):

 $(document).ready(function(){ var scroll_pos = 0; $(document).scroll(function() { scroll_pos = $(this).scrollTop(); if(scroll_pos > 210) { $("body").css('background-color', 'blue'); } else { $("body").css('background-color', 'red'); } }); }); 

更新,更通用的版本:

 var tStart = 100 // Start transition 100px from top , tEnd = 500 // End at 500px , cStart = [250, 195, 56] // Gold , cEnd = [179, 217, 112] // Lime , cDiff = [cEnd[0] - cStart[0], cEnd[1] - cStart[1], cEnd[2] - cStart[2]]; $(document).ready(function(){ $(document).scroll(function() { var p = ($(this).scrollTop() - tStart) / (tEnd - tStart); // % of transition p = Math.min(1, Math.max(0, p)); // Clamp to [0, 1] var cBg = [Math.round(cStart[0] + cDiff[0] * p), Math.round(cStart[1] + cDiff[1] * p), Math.round(cStart[2] + cDiff[2] * p)]; $("body").css('background-color', 'rgb(' + cBg.join(',') +')'); }); }); 

在行动中

如果你想在滚动时进行平滑,渐变的变化,你应该尝试

 $(document).ready(function(){ $(document).scroll(function() { var alpha = Math.min(0.5 + 0.4 * $(this).scrollTop() / 210, 0.9); var channel = Math.round(alpha * 255); $("body").css('background-color', 'rgb(' + channel + ',' + channel + ',' + channel + ')'); }); }); 

的jsfiddle

要获得平滑过渡效果,您应该检查滚动位置,因此您可以更改bg颜色。 使用jquery的.animate函数。

 I found the perfect what I was looking for here 

http://jsfiddle.net/cgspicer/V4qh9/

在@ redmoon7777的帮助下

CSS

 body{ height:5000px; } .fifty { background:rgba(25,20,25,.5) } .ninty { background:rgba(25,20,25,.9) } 

jQuery的

  $(document).ready(function(){ var scroll_pos = 0; $(document).scroll(function() { scroll_pos = $(this).scrollTop(); if(scroll_pos > 210) { $("body").removeClass().addClass('ninty'); } else { $("body").removeClass('ninty').addClass('fifty'); } }); }); 

DEMO

随着动画