700pxの境界を越えて前後にスクロールすると、アニメーションエフェクトがキューに入れられたため、アニメーションが意図したとおりに機能していないのではないかと思われます。
アニメーションを使用するときは、jQueryに「今行っていることを削除し、アニメーションキューを停止して、今言われているとおりに実行する」ように指示することが重要です。つまり、メソッドの.animate
背後にチェーンする必要があります( .stop()について読んでください)。.stop
$(window).scroll(function() {
scrollet = $(window).scrollTop();
if(scrollet > 700) {
$("#top").stop(true, false).animate({"opacity":"0.6"});
}
else {
$("#top").stop(true, false).animate({"opacity":"0"});
}
}
この.stop(true, false)
メソッドは、jQueryにアニメーションキューを強制的にクリアさせますが、要素をアニメーションの最後にジャンプさせることは強制しません。これは.scroll()
、ユーザーがスクロールしたときにイベントが複数回発生するためです。使用する場合.stop(true, true)
、遷移は突然になります。
代替案は次のとおりです。
.scroll()
イベントのデバウンスまたはスロットル
- を使用しないでください
.animate()
。CSSを使用して不透明度を設定し、CSSトランジションを利用してくださいtransition: opacity .25s ease-in-out
。
これが概念実証フィドルです-http://jsfiddle.net/teddyrised/zdpMd/