【コピペOK】スクロールしても固定されるグローバルメニューの作り方|CSS+JavaScript
目次
今回は、WordPressサイトでスクロールしてもグローバルメニュー(ナビゲーションメニュー)を固定表示する方法を紹介します。
1 実装のポイント
グローバルメニューを固定表示(Sticky)にすることで、訪問者はページをスクロールしてもメニューにアクセス可能になります。CSSだけで実装可能な場合もありますが、テーマによってはJavaScriptで調整する必要があります。
2 汎用CSS
/* -------------------------
* Sticky(スクロール追従)用スタイル
* ------------------------- */
#nav.fixed {
position: fixed; /* スクロールしても画面上部に固定 */
top: 0; /* 画面上端に配置 */
width: 100%; /* 横幅いっぱいに広げる */
z-index: 999; /* 他要素より前面に表示 */
background: #fff !important; /* 背景色(テーマに合わせて調整可能) */
opacity: 1 !important; /* 完全に不透明(透けない) */
box-shadow: 0 2px 5px rgba(0,0,0,0.1); /* 少し影をつけて浮いて見える */
}
補足:
テーマによってIDやクラスが異なるため、対象要素を正しく指定してください。IDやクラスが違うと反応さえしません。
テーマによってIDやクラスが異なるため、対象要素を正しく指定してください。IDやクラスが違うと反応さえしません。
3 テーマ別サンプルCSS
3.1 Lightning用
/* -------------------------
* Lightningテーマのヘッダーメニュー用固定スタイル
* ------------------------- */
.global-nav {
position: fixed; /* 画面上部に固定 */
top: 0; /* 画面上端に配置 */
width: 100%; /* 横幅いっぱいに広げる */
z-index: 9999; /* 他要素より最前面に表示 */
background-color: #fff; /* 背景色を白にして下のコンテンツが透けないように */
}
3.2 Cocoon用
/* -------------------------
* Cocoonテーマのヘッダーメニュー用固定スタイル
* ------------------------- */
.navi-in {
position: fixed; /* 画面上部に固定 */
top: 0; /* 画面上端に配置 */
width: 100%; /* 横幅いっぱいに広げる */
z-index: 9999; /* 他要素より最前面に表示 */
background-color: #fff; /* 背景色を白にして下のコンテンツが透けないように */
}
4 Javascriptにコードを追加
「スクロール時の固定を示す」ための簡単なJSコード
ファイル名:fixed-menu.js
保存先:wp-content/themes/child-theme/js/fixed-menu.js
jQuery(function($){
var menu = $('.global-nav'); // Lightning
var offset = menu.offset().top;
$(window).scroll(function(){
if ($(window).scrollTop() > offset) {
menu.addClass('fixed');
} else {
menu.removeClass('fixed');
}
});
});
4.1 ディレクトリ構造
- child-theme/
- archive.php
- category.php
- functions.php
- footer.php
- header.php
- style.css
- js/
- fixed-menu.js
補足:
global-nav の部分をご自身のホームページのIDもしくはクラスに変えてください。
5 代用プラグイン
プラグインを利用する場合は「Sticky Menu (or Anything!) on Scroll」などのプラグインで、メニューや任意の要素を固定できます。
6 まとめ
スクロールしてもグローバルメニューを固定表示することで、サイトの操作性を向上できます。テーマによってIDやクラスが異なるため、対象要素を正しく指定するのがポイントです。


