前提・実現したいこと
ハンバーガーメニューのアイコンをクリックしたときにメニューがスライドして出てくるようにしたい。
クリックイベントが反応しない。
ハンバーガーメニューを作成しているのですが、id=target をクリックした際にメニューをスライドさせて表示させたいのですが、ハンバーガーメニューのアイコンをクリックしても実行されません。
アイコンをクリックした際に、メニューをposition:absolute,leftでスライドして表示させたうえで、ハンバーガーメニューのアイコンを変更させて、✖の形のアイコンに変更させようとしました。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
**
HTML**
<div class="pfix"> <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>
CSS
@media screen and (max-width:768px){ .mainnav__items{ display: none; } .pfix{ display: inherit; } #target{ width: 40px; height: 30px; display: block; position: absolute; top: 35px; left: 84vw; cursor: pointer; transition: 1.5s; } .target_inner{ width: 40px; height: 30px; position: relative; } .target_inner_line{ display: block; width: 40px; height: 5px; background: #fff; transition: 1.5s; border-radius: 50px; position: absolute; z-index: 1; } .target_inner_1{ top: 0; } .target_inner_2{ top: 13px; } .target_inner_3{ top: 26px; } .nav{ width: 100%; height: 100vh; position: absolute; z-index: 1; left: -100%; background: rgba(99,99,99,.95); transition: 1.5s; color: white; } .nav a{ color: white; display: block; text-decoration: none; } ul{ margin: 0; padding: 0; } .nav li{ height: calc(100vh/5); line-height: 200px; list-style: none; font-size: 3em; text-align: center; } .fadein{ left: 0; } .linea, .lineb, .linec{ background: #ffffff; } .linea{ transform: rotate(225deg); top: 13px; } .lineb{ opacity: 0; } .linec{ transform: rotate(-225deg); top: 13px; } }
Java script
var imgList = ["url(./images/top1.png)","url(./images/top2.png)","url(./images/top3.png)","url(./images/top4.png)","url(./images/top5.png)","url(./images/top6.png)"]; var num = -1; function slideShow_timer (){ if(num === 5){ num = 0; } else { num++; } document.getElementById("slideShow").style.backgroundImage = imgList[num] ; } setInterval(slideShow_timer,3000); function hamburger() { document.getElementById('line1').classList.toggle('linea'); document.getElementById('line2').classList.toggle('lineb'); document.getElementById('line3').classList.toggle('linec'); document.getElementById('nav_f').classList.toggle('fadein'); } document.getElementById('target').addEventListener('click', function () { hamburger(); });
試したこと
getElementByIdをquerySelecterに変えてみたが効果はなかった。
clickイベントが動いている感じがしない。
補足情報(FW/ツールのバージョンなど)
https://tech-dig.jp/easy_hamburger/
参考にしたサイト
回答2件
あなたの回答
tips
プレビュー