まず、他の回答で述べたように、カラー アニメーション用に 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 です。私が言ったように、ちょうど別の選択肢です。