menu
menu

キーワード検索

 

最近の投稿

【スクロール】グローバルナビをトップに固定するスティッキーナビ+ドロップダウンメニュー

  • Labs

jQuery

こんにちは(・∀・)

今回はjQueryでグローバルナビゲーションをトップに固定するスティッキーナビ+ドロップダウンメニューをご紹介します。

サンプル

スマホやタブレットでは通常のグローバルナビにしたい場合、userAgentで振り分ける方法も記載してありますのでお試しください。

HTML

Google Hosted LibrariesからjQuery 1.x snippetを<head>内に読み込みます。


<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

<div class="sample-demo">
<div id="nav">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Strategy</a>
<ul>
<li><a href="#">example.com</a></li>
<li><a href="#">example.com</a></li>
</ul>
</li>
<li><a href="#">About</a>
<ul>
<li><a href="#">example.com</a></li>
<li><a href="#">example.com</a></li>
</ul>
</li>
<li><a href="#">Works</a>
<ul>
<li><a href="#">example.com</a></li>
<li><a href="#">example.com</a></li>
</ul>
</li>
<li><a href="#">Mail</a></li>
</ul>
<!--nav--></div>
<div class="content">
stickynav
</div>
CSS

#nav  {
  width: 100%;
  text-align: center;
}
#nav ul  {
  overflow: hidden;
  width: 600px;
  margin: 0 auto;
}
#nav ul li  {
  float: left;
}
#nav ul li a {
  font-size: 14px;
  display: block;
  width: 115px;
  height: 40px;
  margin: 1px 0 0 1px;
  padding: 1px 2px;
  line-height: 1.4;
  color: #fff;
  background: #9fb7d4;
  text-align: center;
}
#nav ul li a:hover {
  color: #fff;
  background: #afc6e2;
}
#nav li ul {
  width: 115px;
  display: none;
  position: absolute;
  z-index: 1000;
  background: #fff;
  padding: 1px 0 0 0;
}
#nav li ul li {
  float: none;
}
#nav li ul li a {
  background: #9fb7d4;
}
.content {
  width: 600px;
  margin: 0 auto;
  padding: 10px;
}
JavaScript

$(function() {
var nav = $('#nav');
var navTop = nav.offset().top;
$(window).scroll(function () {
var winTop = $(this).scrollTop();
if (winTop >= navTop) {
nav.css({
'position': 'fixed',
'top':'0',
'background': 'white',
'z-index': '1000',
'width': '100%',
'text-align': 'center',
'padding-bottom': '5px'
});
} else if (winTop <= navTop) {
nav.css({
'position': 'static',
'top': '',
'background': ''
});
}
});
});
//ドロップダウンメニュー
$(function() {
var nav = $('#nav');
var navTop = nav.offset().top;
$('li', nav).hover(function(){
$('ul',this).stop().slideDown('fast');
},
function(){
$('ul',this).stop().slideUp('fast');
});
});

スマホやタブレットでは通常のグローバルナビにしたい場合、以下の様にuserAgentで振り分けてください。


var ua = navigator.userAgent;
if (ua.indexOf('iPhone') != -1 || ua.indexOf('iPad') != -1 || ua.indexOf('iPod') != -1 || ua.indexOf('Android') != -1) {
//iPhone、iPad、iPod、Androidの場合何もしない。
}
else{
//それ以外の場合はnavをトップ固定。
$(function() {
var nav = $('#nav');
var navTop = nav.offset().top;
$(window).scroll(function () {
var winTop = $(this).scrollTop();
if (winTop >= navTop) {
nav.css({
'position': 'fixed',
'top':'0',
'background': 'white',
'z-index': '1000',
'width': '100%',
'text-align': 'center',
'padding-bottom': '5px'
});
} else if (winTop <= navTop) {
nav.css({
'position': 'static',
'top': '',
'background': ''
});
}
});
});
//ドロップダウンメニュー
$(function() {
var nav = $('#nav');
var navTop = nav.offset().top;
$('li', nav).hover(function(){
$('ul',this).stop().slideDown('fast');
},
function(){
$('ul',this).stop().slideUp('fast');
});
});
}
Result

サンプルデモはこちら


関連リンク

【スクロール】スクロールしても要素が固定するスティッキーサイドバー
【スクロール】グローバルナビをトップに固定するスティッキーナビ

  • カテゴリー:Labs