[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>