ハンバーガーメニューでナビゲーションリンクをクリックするとメニューを閉じる方法
スマホ用のハンバーガーメニューで、ナビゲーション内のリンクをクリックするとメニューが自動で閉じるようにする方法を解説します。
問題点
一般的なハンバーガーメニューでは、.sp_navi dt a をクリックするとメニューが開閉されます。
しかし、.sp_navi_list li a をクリックしてもメニューが閉じず、
そのままになってしまうことがあります。
また、 .sp_navi.sp.pc_hide に sp_new クラスが残ってしまい、メ
ニューが閉じた状態でも影響を及ぼしてしまうことがあります。
解決策
document.addEventListener を使用して、ナビゲーションリンクがクリックされた際に、
以下の処理を行います。
- ハンバーガーメニューの開閉ボタン(
.sp_navi dt a)のactiveクラスを削除 .sp_navi_listをdisplay: none;にして確実にメニューを閉じる.sp_navi.sp.pc_hideのsp_newクラスを削除し、不要なスタイルが残らないようにする- スクロール制限を解除
修正コード
document.addEventListener("DOMContentLoaded", function () {
// ナビゲーションリンクを取得
document.querySelectorAll(".sp_navi_list li a").forEach(function (navLink) {
navLink.addEventListener("click", function () {
// ハンバーガーメニューの開閉ボタン
var naviToggle = document.querySelector(".sp_navi dt a");
var naviList = document.querySelector(".sp_navi_list");
var naviFixedArea = document.querySelector(".sp_navi_fixed_area");
var spNavi = document.querySelector('.sp_navi.sp.pc_hide'); // メニュー本体
if (naviToggle && naviList) {
// クラスの削除(開いている場合のみ)
if (naviToggle.classList.contains("active")) {
naviToggle.classList.remove("active");
naviList.style.display = "none"; // 確実に非表示
naviList.classList.remove("menu_new"); // 他のクラスによる表示制御も解除
}
// 高さのリセット
if (naviFixedArea) {
naviFixedArea.style.height = "62px";
}
// `.sp_navi.sp.pc_hide` の `sp_new` クラスを削除
if (spNavi && spNavi.classList.contains("sp_new")) {
spNavi.classList.remove("sp_new");
}
// スクロール制限を解除
document.body.style.position = "";
document.body.style.top = "";
window.scrollTo(0, scrollpos);
}
});
});
});
ポイント
sp_newクラスを削除.sp_navi.sp.pc_hideにsp_newが付いたままだと影響が残るため、クリック時に削除。
naviToggle(.sp_navi dt a) のactiveも削除- これにより、メニュー開閉時の動作が正しくなる。
display: none;を適用.sp_navi_listを確実に非表示にするためにstyle.display = "none";を適用。
- スクロール制限解除
document.body.style.position = "";でスクロールロックを解除。
jQuery を使う場合
もし jQuery を使用している場合は、以下のコードで対応できます。
$(document).ready(function () {
$(".sp_navi_list li a").on("click", function () {
$(".sp_navi_list").hide();
$(".sp_navi dt a").removeClass("active");
$(".sp_navi.sp.pc_hide").removeClass("sp_new");
$("body").css("position", "").css("top", "");
});
});
まとめ
この修正を加えることで、ナビゲーションのリンクをクリックした際に、
- メニューが確実に閉じる
- 不要なクラスが残らない
- スクロール制限が解除される
という状態になり、よりスムーズなユーザー体験を提供できます。ぜひ試してみてください!


Swiperで作る“寄り→引き”ヒーロースライダー実装ガイド 〜ズーム方向指定・Ken Burns効果・進捗ラインまで〜
1月 6, 2026横スライドしながら拡大するスライド演出の作り方〜ズームインで魅せる、上質なキービジュアル表現〜
12月 24, 2025今日の日付と現在時刻を自動表示!「10月15日10:15 現在」をJavaScriptで実装する方法
10月 15, 2025