こんにちは、フローです。
今回は、ハンバーガーメニューで使うjQuery(ジェイクエリ)を使用して、
メニューが、開いたり閉じたりする機能を作っていきましょう。
前回の記事はこちらです。
目次
- 1 実装してみよう
- 2 ファイルの中身を書いてみよう
- 2.1 1行目: $(document).ready(function() {
- 2.2 2行目: $(‘.hamburger’).click(function(){
- 2.3 3行目: $(this).toggleClass(‘active’);
- 2.4 4行目: $(‘.navlist’).toggleClass(‘show’);
- 2.5 5行目: });
- 2.6 1行目: $(window).resize(function() {
- 2.7 2行目: if ($(window).width() > 768) {
- 2.8 3行目: $(‘.navlist’).removeClass(‘show’);
- 2.9 4行目: $(‘.hamburger’).removeClass(‘active’);
- 2.10 5行目: });
- 3 まとめ
実装してみよう
WEBページで、
動的なサイトを作るのに必須アイテムが、jQuery(ジェイクエリ)です。
まずはどうやったら使えるようになるのかですが、非常に簡単です。
HTMLの記述の中の、
</body>の直前に、jQueryを実行させるためのCDNを埋め込むだけです。
<!DOCTYPE html>
<html lang="ja">
<head>
必要なものを記述
</head>
<body>
<header>
<div class="hamburger">
<span class="bar"></span>
<span class="bar"></span>
<span class="bar"></span>
</div>
</nav>
</header>
<main>
色々あって
</main>
<footer>
ちょろちょろ書いて
</footer>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="main.js"></script>
</body>
</html>
このHTMLの
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
この部分です。</body >の直前に書くのが一般的な書き方です。
<script src="main.js"></script>
この部分は、ハンバーガーメニューに必要な、
jQueryの記述を書いて入れておく
“main.js”ファイルの読み込みをする為の記述です。
ファイルの中身を書いてみよう
さっそく、”main.js”の中身を見ていきましょう。
$(document).ready(function() {
$('.hamburger').click(function() {
$(this).toggleClass('active');
$('.nav-list').toggleClass('show');
});
});
$(window).resize(function() {
if ($(window).width() > 768) {
$('.nav-list').removeClass('show');
$('.hamburger').removeClass('active');
}
});
この記述は、ハンバーガーメニューを実装するためのものです。以下、1行づつ解説します。
1行目: $(document).ready(function() {
初期化処理を表します。
HTMLのドキュメントの読み込みが完了した後に実行されます。
このように、HTMLのドキュメントの読み込みが完了してからjQueryを使用することで、
jQueryが正常に動作することが保証されます。
2行目: $(‘.hamburger’).click(function(){
CSSクラス、
「hamburger」を持つをクリックしたときに実行する処理を記述しています。
「$(‘.hamburger’)」は、
CSSクラス「hamburger」を持つ要素を選択するjQueryのセレクタです。
「click」メソッドは、要素をクリックしたときに実行する処理を記述するものです。
3行目: $(this).toggleClass(‘active’);
クリックされた「hamburger」に
「active」クラスをトグル(切り替え)する処理を記述しています。
「$(this)」は、クリックされた「hamburger」要素を表します。「toggleClass」メソッドは、
対象の要素にCSSクラスを追加または削除するものです。
この行では、「hamburger」に
「active」クラスが追加されている場合は削除され、そうでない場合は追加されます。
CSSクラス「nav-list」を持つ要素に
「show」クラスをトグル(切り替え)する処理を記述しています。
「$(‘.nav-list’)」は、
CSSクラス「nav-list」を持つ要素を選択するjQueryのセレクタです。
「toggleClass」メソッドは、
対象の要素にCSSクラスを追加または削除するものです。
この行では、「nav-list」に
「show」クラスが追加されている場合は削除され、
そうでない場合は追加されます。
これにより、「nav-list」が表示・非表示が切り替わります。
5行目: });
jQueryの初期化処理とclickイベントハンドラの終了を表しています。
この記述により、jQueryの初期化処理とclickイベントハンドラが閉じられます。
jQueryの初期化処理と
clickイベントハンドラの終了を表しています。
この記述により、jQueryの初期化処理とclickイベントハンドラが閉じられます。
次に、
$(window).resize(function() {
if ($(window).width() > 768) {
$('.nav-list').removeClass('show');
$('.hamburger').removeClass('active');
}
});
ウィンドウのリサイズイベント
(ブラウザのサイズが変更されたとき)に対する処理を記述しています。
以下、1行づつ解説します。
1行目: $(window).resize(function() {
ウィンドウのリサイズイベントに対する処理を記述するものです。
この中に記述された内容は、ブラウザのサイズが変更されたときに実行されます。
2行目: if ($(window).width() > 768) {
ブラウザのサイズが768px以上かどうかを判定するものです。
「$(window).width()」は、
ブラウザのサイズ(幅)を取得するものです。
「> 768」は、「768px以上」を表します。
ブラウザのサイズが768px以上かどうかを判定するものです。
CSSクラス「nav-list」を持つ要素から、
「show」クラスを削除するものです。
「$(‘.nav-list’)」は、
CSSクラス「nav-list」を持つ要素を選択するjQueryのセレクタです。
「removeClass」メソッドは、
対象の要素からCSSクラスを削除するものです。
4行目: $(‘.hamburger’).removeClass(‘active’);
CSSクラス
「hamburger」を持つ要素から、
「active」クラスを削除するものです。
「$(‘.hamburger’)」は、
CSSクラス「hamburger」を持つ要素を、
選択するjQueryのセレクタです。「removeClass」メソッドは、
対象の要素からCSSクラスを削除するものです。
5行目: });
この行は、ウィンドウのリサイズイベントの処理の閉じを表しています。
ちなみに、
この記述は、ハンバーガーメニューの実装に必須ではありません。
この記述がある場合、
ブラウザのサイズが768px以上になったときに、
「nav-list」と
「hamburger」から「show」と「active」クラスが削除されます。
これにより、ハンバーガーメニューを使った表示が不要な場合
(例えば、PCブラウザなどで表示する場合)
に、通常のメニュー表示に切り替えることができます。
この記述がない場合、
ハンバーガーメニューを使った表示が不要な場合でも、
「nav-list」と「hamburger」に
「show」と「active」クラスが残ったままとなります。
この場合、ページのデザインに問題が発生する可能性があります。
しかし、この記述が必要かどうかは、
そのWebページの要件やデザインによって異なります。
必要と判断する場合は、記述することが望ましいですが、
必要と判断しない場合は記述する必要はありません。
まとめ
今回は、ハンバーガーメニューの実装に必要な、
jQueryの記述について書いていきました。
私は何度も何度もハマりました笑
なので、基本的な記述がわかったなら、
このパターンを毎回使う事をオススメします。
パーツとして色々と持って置くと、
時短にもなりますし、毎回書いてると、工数が多いので、ミスにも繋がります。
なので、ある程度理解したらそれでオッケーです。
この記述をそのまま使うも良し、自作で作るも良し、
是非、色々なパーツを揃えてみて下さい。
レッツチャレンジ!
最近のコメント