以前、ハンバーガーメニューの作成方法を紹介したと思うんですが、
(以前紹介したハンバーガーメニューはコチラ↓↓)
【ハンバーガーメニュー&トグルニュー】クリックすると表示されるグローバルナビの実装方法
今回はJS初心者の方のためにJS初心者の私が、
より分かりやすい簡単なコードでハンバーガーメニューを再度ご紹介したいと思います!
今回、作成するのはこちらのハンバーガーメニューです。
早速作成していきましょう!
HTMLで形作り
早速簡単に説明していきます!
<nav class="nav" id="nav_f">
<ul>
<li><a href="#one" class="list">one</a></li>
<li><a href="#two" class="list">two</a></li>
<li><a href="#three" class="list">three</a></li>
<li><a href="#four" class="list">four</a></li>
<li><a href="#five" class="list">five</a></li>
</ul>
</nav>
ここの部分でハンバーガーを押した時に出てくるナビメニューを作成しています!
<div id="target">
<div class="target_inner">
<span class="target_inner_line target_inner_1" id="line1"></span>
<span class="target_inner_line target_inner_2" id="line2"></span>
<span class="target_inner_line target_inner_3" id="line3"></span>
</div>
</div>
ここでハンバーガー本体を作成しています!
ハンバーガーの棒の部分は、この方法以外にもdivで作成する方法や::after,::beforeで作る方法など
様々ありますが、今回はspanを使って作成しました!
CSSで形を整える
cssは少々長いので詳しい説明を省きますが、簡単に説明すると
/*動き*/の部分でClass名を決めて動きを指定しています。
後はお好みで幅や色、動きなどを変えてみてください!
JavaScriptで動きを付ける
function hamburger() {
document.getElementById('line1').classList.toggle('linea');
document.getElementById('line2').classList.toggle('lineb');
document.getElementById('line3').classList.toggle('linec');
document.getElementById('target').classList.toggle('slidex');
document.getElementById('nav_f').classList.toggle('fadein');
}
document.getElementById('target').addEventListener('click', function () {
hamburger();
});
let list = document.getElementsByClassName('list');
for (let i = 0; i < list.length; i++) {
list[i].addEventListener('click', function () {
hamburger();
});
}
まず、今回のjsの書き方を簡単に説明すると・・・
htmlからID名とClass名を取って来て、それをクリックしたとき(動きはcssで指定)
そのクラス名をこのID名に付けてね~というコードになっています!
それでは、少しずつかみ砕いていきたいと思います!
Lesson1
function hamburger(){}
hamburgerという関数を宣言をして、{}の中にしたい処理をまとめておきます。
Lesson2
document.getElementById('').classList.toggle('')
document(html)の中から、Classを付けたい場所のID名をgetElementById(‘ ‘)で取ってきて、
そこに.classList.toggle(‘ ‘)でcssで動きを指定したclass名を付与します。
toggleでon/offを切り替えることができます!
Lesson3
document.getElementById('target').addEventListener('click', function () {
hamburger();
});
getElementByIdでとってきたIDにaddEventListenerでイベント処理を指定して、
その中に先ほど作成したクリックしたときにしたい処理をまとめていた関数を呼び起こします。
ここまでの処理で、ハンバーガーアイコンをタッチしたときメニューが出てきたり、閉じたりするはずです!
次は、navのliに対して、クリックしたらメニューを閉じてリンク先へ飛ばす処理を書いていきます!
Lesson4
let list = document.getElementsByClassName('list');
getElementsByClassName(‘ ‘)でクラス名を呼び起こすことができます。
このまま書くのもいいのですが、少々長いので今回は変数に入れておきます。
Lesson5
for (let i = 0; i < list.length; i++) {}
liひとつずつに最初の処理を指定していかないといけないのですが、それでは長くなり手間なので
ここでは、forで繰り返し処理をし、どのくらい繰り返すのか指定していきます。
iに0を代入し、iがlistのlength(要素数)より小さい時、iに1を足していくという感じなんですけど、
簡単に言うとiが要素数を超えるまで処理してね!という意味で{}の中に処理を書いていきます。
ここでいう要素はClass名listが付いているliに当たります!
Lesson6
list[i].addEventListener('click', function () {hamburger();});
list[i]で、Class名listが付いているliをひとつずつ取り出してきます。
あとはlesson3と同じで、クリックしたとき、hamburgerという関数を呼び起こして処理してね!になります。
どうでしたか?こうやって少しずつかみ砕いてみると簡単ですね!
JS博士の人達からしたら拙いコードかもしれませんが、動いたのでOK(/・ω・)/(笑)
まずは簡単なコードを組んで、そこからどんどん改造していくことで脱JS初心者になれるのでは!!
皆さんも、試してみてください!