【发布时间】:2012-02-04 01:37:12
【问题描述】:
当用户向下滚动页面时,jquery 是否有可能使背景从 50% 白色变为 90% 白色或其他?
首先是颜色rgba(255,255,255,.5),当用户滚动到颜色become rgba(255,255,255,.9)下方210px时。
【问题讨论】:
标签: jquery colors background scroll background-color
当用户向下滚动页面时,jquery 是否有可能使背景从 50% 白色变为 90% 白色或其他?
首先是颜色rgba(255,255,255,.5),当用户滚动到颜色become rgba(255,255,255,.9)下方210px时。
【问题讨论】:
标签: jquery colors background scroll background-color
更新,更通用的版本:
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 + ')');
});
});
【讨论】:
到这里(当您滚动超过 210 像素时,这会将页面颜色更改为蓝色,如果您返回,则会恢复为红色):
$(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');
}
});
});
【讨论】:
为了平滑过渡效果,您应该检查滚动位置,相应地您可以更改背景颜色。使用jquery的.animate函数。
I found the perfect what I was looking for here
【讨论】:
在@redmoon7777 的帮助下
body{ height:5000px; }
.fifty { background:rgba(25,20,25,.5) }
.ninty { background:rgba(25,20,25,.9) }
$(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');
}
});
});
【讨论】:
带动画
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<!--for RGBA support. http://pioupioum.fr/sandbox/jquery-color/ -->
<script type="text/javascript" src="https://raw.github.com/piouPiouM/jquery-color/master/jquery.color.js"></script>
<!--the magic -->
<script type="text/javascript">
$(document).ready(function(){
$(document).scroll(function(){
if($(this).scrollTop() > 210)
$('#bk').animate({backgroundColor: 'rgba(255,255,255,.9)'}, 1000);
});
});
</script>
</head>
<body style="background: black">
<div id="bk" style="background-color: rgba(255,255,255,.5); height: 200%; min-height: 400px">
<!--change this element's background transparency instead of body so that you will see the effect -->
</div>
</body>
</html>
【讨论】:
这是一个改编自 W3 教程 javascript 的答案。
window.onscroll = function() {scrollFunction()};
function scrollFunction() {
if (document.body.scrollTop > 420 || document.documentElement.scrollTop > 420) {
document.getElementById("navigationBar").style.background = "#2E5894";
} else {
document.getElementById("navigationBar").style.background = "transparent";
}
}
这改变了一个特定的 id,对我来说是我的导航栏。为了便于转换,请将其添加到您的 css 中,在这种情况下位于导航栏“id”下(以及您喜欢的其他规范)。
#navigationBar{
/*my header bar, no need to follow this*/
overflow: hidden;
color: white;*/
width:100%;
position: fixed;
-webkit-transition: all ease-out .5s;
-moz-transition: all ease-out .5s;
-o-transition: all ease-out .5s;
transition: all ease-out .5s;
}
这将为您提供一个在 420 像素后逐渐改变颜色的条形。
【讨论】: