すたらブログ

文系Webプログラマの備忘録

jQuery: ページをスクロールすると途中でスライドダウンするfixedなグローバルナビの例

初期状態で設置されているグローバルナビがスクロールで見えなくなると、別のグローバルナビがページの上部にfixedで固定される、という表示を目指します。
jQuery.slideDown().slideUp()を使えば簡単に作れます。

しかし、これをslideDownではなく、別の動きにしてほしいと頼まれました。
.slideDown()は要素の高さが徐々に元に戻るという動作で表現されていますが、そうではなく、元のサイズの要素がそのまま上から下りてくるという動作で表現してほしいとのこと。
両者の違いは、下の記事が分かりやすいです。

そこで、.animate()を使って実現しました。

スライドダウンとスライドアップの2種類の動作のうち、同じ動作が連続して実行されるのを防ぐため、前回の動作を記憶するようにしています。
また、逆の動作の場合にすぐに動きが切り替わるよう、.stop()を使って以前の動作を取り消すようにしています。