[css/jquery/wordpress] スクロールしてもページ上部に固定されるメニュー

スクロールしてもページ上部に固定されるwordpressメニューは以下のように実装する

目次

メニュー部分

<div class="global-navi">
 <?php
 wp_nav_menu( array(
 'menu' => 'hogehoge', //どんな意味があるのかよく分かりません…
 'menu_class' => 'menu_class', // メニューを構成するul要素につけるCSSクラス名
 'menu_id' => 'menu_id', // メニュを構成するul要素につけるCSSI ID名
 'container' => 'div', // ulを囲う要素を指定。div or nav。なしの場合には false
 'container_class' => 'container_class', // コンテナに適用するCSSクラス名
 'container_id' => 'container_id', // コンテナに適用するCSS ID名
 'fallback_cb' => 'wp_page_menu', // メニューが存在しない場合にコールバック関数を呼び出す
 'before' => '[before]', // メニューアイテムのリンクの前に挿入するテキスト
 'after' => '[after]', // メニューアイテムのリンクの後に挿入するテキスト
 'link_before' => '[link_before]', // リンク内の前に挿入するテキスト
 'link_after' => '[link_after]', // リンク内の後に挿入するテキスト
 'echo' => true, // メニューをHTML出力する(true)かPHPの値で返す(false)か
 'depth' => 1, // 何階層まで表示するか。0は全階層、1は親メニューまで、2は子メニューまで…という感じ
 'walker' => '', // カスタムウォーカーを使用する場合
 'theme_location' => 'global', // メニュー位置を指定
 'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>', // メニューアイテムのラップの仕方。%1$sには'menu_id'のパラメータ展開、%2$sには'menu_class'のパラメータ展開、%3$sはリストの項目が値として展開されます
 ) );
 ?>
</div>

固定css

.fixed {
 position: fixed;
 top: 0;
 width: 100%;
 z-index: 10000;
}

 

jquery実装

header.phpに以下のコードを実装する

<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
<script type="text/javascript">
jQuery(function($) {
 var nav = $('#global-navi'),
 offset = nav.offset();
 $(window).scroll(function () {
 if($(window).scrollTop() > offset.top) {
 nav.addClass('fixed');
 } else {
 nav.removeClass('fixed');
 }
 });
});
</script>

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です