私は自分のメニューをスクロールしようとしています。div Jqueryを使用したページでのスクロール
はこのrelativly単純に使用している:私は望んでいた
#main-header-wrapper {
width: 100vw;
height: 75px;
position: absolute;
top: 0;
left: 0;
}
何、しかしスクロールのアニメーションのタイプだった実現可能なのjQueryを使用した:
$(window).scroll(function(){
$("#main-header-wrapper").stop().animate({"marginTop": ($(window).scrollTop()) + "px", "marginLeft":($(window).scrollLeft()) + "px"}, "slow");
});
メニューバーが滑り落ちるこのjQueryのソリューションでユーザーがスクロールを停止した後、上から移動します。
しかし、ユーザーがスクロールすると、バーはスクロールして戻る前にページに「スティック」しているように見えます。
私が達成したいのは、ダウンスクロールアニメーションはまだそのまま動作していますが、ユーザーがスクロールしてアニメーションがまったくない場合です。バーは、スクロール全体の間、ページの上部にあります。
Codepen:http://codepen.io/think123/pen/mAxlb
のjQueryのから撮影された:How can I determine the direction of a jQuery scroll event?
しかし、この方法はただ原油をようだが、私はここから受け入れ答えを使用して解決策を考え出すでしたHow do I make a <div> move up and down when I'm scrolling the page?
所望の効果を達成する。
これを達成するためのより良い方法はありますか?
私のソリューション:
var lastScrollTop = 0;
$(window).scroll(function(event){
var st = $(this).scrollTop();
if (st > lastScrollTop){
$("#div").stop().animate({"marginTop": ($(window).scrollTop()) + "px", "marginLeft":($(window).scrollLeft()) + "px"}, "slow");
} else {
$("#div").css({"margin-top": ($(window).scrollTop()) + "px", "margin-left":($(window).scrollLeft()) + "px"});
}
lastScrollTop = st;
});
あなたは私のソリューションを使用して所望の効果を見ることができるので、私は一緒にCodePenを置く:http://codepen.io/anon/pen/XjXpZv
それがアニメーション化する必要がありますか?ユーザーがナビゲーションの初期状態の高さを過ぎてスクロールしたときに、(より高いz-インデックスで)ナビゲーションを修正できない理由は何ですか? (ページの上にスクロールしたときに削除されます)。それが私のやり方であり、それは私のために信頼できるものです。ヘッダーの高さをオフセットするためにマージンの底を追加する必要があります。ヘッダの高さは固定されたときに失われ、その下のコンテンツは飛びません。 – doublesidedstickytape
それは美学のためのものです。私はそれが私がそれを望むように働いているが、私は "クリーナー"方法があるように感じる。私のソリューションはちょうどそれが面倒なjqueryのように見えます。 –