Skip to content

Instantly share code, notes, and snippets.

@manabuyasuda
Last active February 28, 2016 14:06
Show Gist options
  • Save manabuyasuda/06c480dc2992e2726db9 to your computer and use it in GitHub Desktop.
Save manabuyasuda/06c480dc2992e2726db9 to your computer and use it in GitHub Desktop.
スクロールダウンすると非表示、スクロールアップすると表示されるナビゲーションです。
// @desc - スクロールの方向を判断して、ナビゲーションの表示を切り替えます。
$(function() {
// 表示を切り替えるナビゲーションのクラス名を指定する。
var $nav = $('.nav');
var state = 'is-active';
$nav.addClass(state);
var startPos = 0;
var scrollTimer;
$(window).scroll(function(){
var currentPos = $(this).scrollTop();
// スクロールの動作が終わってから処理を実行。
// 現在の位置より進むとstateクラスが削除され、
// 戻るとstateクラスが付与される。
clearTimeout(scrollTimer);
scrollTimer = setTimeout(function() {
if (currentPos >= startPos) {
$nav.removeClass(state);
} else {
$nav.addClass(state);
}
startPos = currentPos;
}, 10);
});
});
body {
padding-top: 3em;
}
/**
* positionで位置を固定、z-indexで非表示のときに選択できないようにする。
* opacityとvisivilityで表示を切り替え、transitionでアニメーションをさせる。
*/
.nav {
margin: 0;
padding: 1em 0;
text-align: center;
list-style-type: none;
position: fixed;
z-index: -1;
top: 0;
left: 0;
width: 100%;
opacity: 0;
visivility: hidden;
transition: all ease-out 0.3s;
background-color: #fff;
&.is-active {
z-index: 1;
opacity: 1;
visivility: visible;
}
li {
display: inline-block;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment