首先,正如另一个答案中提到的,您需要包含 jQuery UI 或用于彩色动画的 jQuery Color 插件。
其次,这只是暂时的,但给这个老大学试试:
$(function(){
$(window).scroll(function(){
var $scrollPercent = ($(document).scrollTop() / 100);
if($scrollPercent <= 1){
$('header').css({backgroundColor:'rgba(0,0,0,'+$scrollPercent+')'});
}
});
});
这应该会根据您滚动页面的数量逐渐淡入。这意味着如果您向下滚动 50 像素,您的背景颜色不透明度将设置为 50%(向下 50 像素/需要 100 像素高度)。您还可以通过这种方式轻松更改要向下滚动以达到完全不透明度的高度量。
编辑所以事实证明你只是想在 100px 后淡入颜色......而不是我的逐渐淡入。没问题。
其他人指出了美妙(而且更好)的 CSS3 方法……创建一个过渡效果,并在滚动上添加一个类。我不会抢走他们的风头,但我将提供一个也适用于古代浏览器的替代方案。
在顶部的标题中添加一行额外的 HTML:
<div class="header">
<div class="headerBackground"></div>
<!-- other header stuffs -->
</div>
然后将其 CSS 设置为:
.header {
position:relative;
}
.headerBackground {
position:absolute;
top:0;
left:0;
right:0;
bottom:0;
background-color:rgb(0,0,0);
opacity:0;
filter:alpha(opacity=0); // for IE8 and below
}
然后使用以下 jQuery:
$(function(){
$(window).scroll(function(){
var $bg = $('.headerBackground');
if($(document).scrollTop() >= 100){
$bg.animate({opacity:1},500); // or whatever speed you want
} else {
$bg.animate({opacity:0},500);
}
});
});
这还具有不需要其他库(jQuery UI / jQuery Color 插件)的额外好处。缺点当然是非语义的 HTML。就像我说的,只是另一种选择。