はじめに
モバイルフレンドリーなウェブサイトでは、一般的にハンバーガーメニューが使用されます。しかし、ユーザーがメニューを開いた後に、ページ内のリンクをクリックした場合、メニューが開いたままだと使い勝手が悪いですよね。そこで、ページ内のリンクをクリックすると自動的にハンバーガーメニューを閉じる方法を紹介します。
実装コード
以下のコードを使用して、ハンバーガーメニュー内のリンクがクリックされたときにメニューを閉じることができます。
$('#hamburger-menu a[href]').on('click', function(event) {
$('.hamburger').trigger('click');
});
コードの解説
- セレクタ:
$('#hamburger-menu a[href]')
#hamburger-menu
内のすべてのリンク(a
タグ)を選択します。このセレクタは、ハンバーガーメニュー内のリンク全てに適用されます。
- クリックイベントのバインド:
.on('click', function(event)
- 選択されたリンクに対してクリックイベントをバインドします。リンクがクリックされると、指定された関数が実行されます。
- メニューを閉じる:
$('.hamburger').trigger('click');
.hamburger
セレクタで選択された要素(通常はハンバーガーメニューのトリガーとなるボタンやアイコン)に対してクリックイベントを発生させます。これにより、ハンバーガーメニューが閉じられます。
実装のポイント
jQueryライブラリの読み込み: このコードはjQueryを使用しているため、事前にjQueryライブラリを読み込んでおく必要があります。以下のようにHTMLの<head>
タグ内に追加します。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
例えば、以下のようなHTMLがあるとします。
<div class="hamburger">ハンバーガーメニュー</div>
<div id="hamburger-menu">
<a href="#section1">セクション1</a>
<a href="#section2">セクション2</a>
<a href="#section3">セクション3</a>
</div>
ハンバーガーメニューを開いている状態で、#section1
や#section2
、#section3
へのリンクをクリックすると、それぞれのセクションへスクロールしますが、同時にハンバーガーメニューも自動的に閉じられます。
このコードでは、$('#hamburger-menu a[href]')
でハンバーガーメニュー内のリンクを指定し、そのリンクがクリックされた際に$('.hamburger').trigger('click')
が実行されます。これにより、ハンバーガーメニューが閉じられることになります。
まとめ
ハンバーガーメニューを使用したサイトで、ページ内リンクをクリックしたときにメニューを自動的に閉じることで、ユーザー体験を向上させることができます。このシンプルなjQueryスニペットを使って、ぜひ自分のサイトに実装してみてください。