このウェブサイトと同じヘッダーのフェードイン/フェードアウト効果を実現しようとしています: http://www.shopstyle.com/
Web サイトにアクセスして下にスクロールすると、最初のヘッダーが透明であることがわかりますが、特定の数のピクセルを下にスクロールすると、CSS は無地の背景に切り替わります。これはjquery/jsを介して行われますか、それともCSS3を介して可能ですか?
ありがとうございました
このウェブサイトと同じヘッダーのフェードイン/フェードアウト効果を実現しようとしています: http://www.shopstyle.com/
Web サイトにアクセスして下にスクロールすると、最初のヘッダーが透明であることがわかりますが、特定の数のピクセルを下にスクロールすると、CSS は無地の背景に切り替わります。これはjquery/jsを介して行われますか、それともCSS3を介して可能ですか?
ありがとうございました
CSS はスクロール トップを選択できないため、CSS だけでは不可能です。ただし、JavaScriptを介して行うのは非常に簡単です。
$(window).on("scroll", function () {
if ($(this).scrollTop() > 100) {
$("#header").addClass("not-transparent");
}
else {
$("#header").removeClass("not-transparent");
}
});
jQuery Waypointsプラグインを使用header
して、特定のスクロール位置/オフセットでクラスの変更をトリガーします。ここには、この目的専用のウェイポイント (スティッキー要素) の拡張もあります。CSS3 トランジション/アニメーションまたは jQuery UI クラス変更アニメーションのいずれかでアニメーション化できます。
リンクしたサイトと同様にアニメーション化するスティッキーヘッダーを持つ最近作成したサイトから、これは私がその機能に使用したすべての JS です。
$('.header-wrap').waypoint('sticky', {
stuckClass: 'stuck',
offset: -1
});
offset: -1
.header-wrap
要素の上部がウィンドウに関連してヒットすると、変更がトリガーされることを意味し-1px
ます(つまり、基本的にウィンドウがスクロールさ-200
れると、ウィンドウが200pxスクロールされるまで起動しません)。
クラスのstuck
変更は、透明度、アニメーション、位置などのすべてを処理します。
JavaScript と CSS3 を組み合わせるとうまくいくはずです。本質的に必要なことは、$(window).scroll イベントをリッスンし、特定の y オフセットでクラス (例: fill) をヘッダーに追加することです。
.header { transition: all 1s; }
.header.fill { background-color:rgba(0,0,0,.25); }