
【jQuery】初期表示は開いていて、スクロールすると閉じるfixedのナビゲーション
週末はクリスマスですね。
今年も残りわずか、一年あっという間です。
さて今回は初期表示は開いていて、スクロールすると閉じるfixedのナビゲーションです。
ボタンを押して意図的に開いたときにはスクロールしても閉じないようにしています。
デモ
See the Pen vyMGvP by leo (@leo-trym) on CodePen.
ソース
HTML
<header class="header">
<div class="btn"><i class="fa fa-bars" aria-hidden="true"></i></div>
<nav class="nav">
<ul>
<li><a href="#">HOME</a></li>
<li><a href="#">ABOUT</a></li>
<li><a href="#">BLOG</a></li>
</ul>
</nav>
</header>
CSS
.nav {
position: fixed;
z-index: 1000;
top: 0;
left: 0;
width: 100%;
background-color: rgba(0, 0, 0, 0.5);
}
.nav ul li {
display: inline-block;
padding: 0 1em;
color: #ccc;
}
.nav ul li a {
color: #fff;
}
.btn {
position: fixed;
z-index: 1100;
top: 0;
right: 2.5%;
cursor: pointer;
font-size: 35px;
}
JS
$(function () {
var $nav = $('.nav'), // ナビのクラス
$btn = $('.btn'); // ボタンのクラス
$btn.click(function(){
$nav.stop().slideToggle(function(){
if ( $(this).is(':visible') ) {
$(this).addClass('open'); // ボタンで開いたらクラスにopenを付与
} else {
$(this).removeClass('open'); // 閉じたらopenを削除
}
});
});
var wintop = $(window).scrollTop(); // 読み込み時のスクロール位置
$(window).on('scroll', function () {
if ( !$nav.hasClass('open') && wintop != $(window).scrollTop() ) { // クラスにopenがなく、wintopとスクロール位置がずれたら
$nav.slideUp(); // ナビゲーションを隠す
}
});
});
Writer
KO
誕生日に会社のみんなから『世界文学全集』をプレゼントしてもらった読書好きフロントエンド・エンジニアです。WordPressとMovableTypeが得意ですが、本当の特技は薪割りです。






































