このサイトのパソコン版の表示の右上にあるメニューのように、サブメニューが表示されるようにしたいです。上のサイトでは、ホバーしたらサブメニューが表示されますが、僕はクリックしたら表れるように実装したいです。
html
1<div class="container"> 2 <ul id="header"> 3 <li><a id="profileLogoName"></a></li> 4 <li><a href="" id="memberLogo"></a></li> 5 <li><a href="" id="symbolLogo"></a></li> 6 <li><a href="" id="systemLogo"></a></li> 7 <li><a href="" id="othersLogo"></a></li> 8 </ul> 9 10 <!-- サブメニュー --> 11 <aside> 12 <ul> 13 <li><a href=""><span id="arrow">→ </span>CONCEPT</a></li> 14 <li><a href="">ACTIVITY</a></li> 15 <li><a href="">HISTORY</a></li> 16 <li><a href="">MAIL</a></li> 17 </ul> 18 </aside> 19</div> 20 <!-- サブメニュー -->
javascript
1var wholePage = document.body; 2var profile = document.getElementById('profileLogoName'); 3var sideMenu = document.getElementsByTagName('aside'); 4var confirm = true; 5 6 profile.addEventListener('click', function() { 7 sideMenu[0].style.display = "inline-block"; 8 confirm = false; 9 }); 10 wholePage.addEventListener('click', function() { 11 if(confirm = true) {return;} 12 sideMenu[0].style.display = "none"; 13 confirm = true; 14 });
header
idのul
タグがメニュー、aside
タグがサブメニューです。
aside
タグにはCSSにて、最初はdisplay: none;
を設定しています。profileLogoName
idが付いたa
タグを押すとdisplay: inline-block;
に変わり、aside
タグ以外の部分を押すとdisplay: none;
に変わるというように実装されるのが理想です。
サブメニューを表示させるのはうまくいきました。しかし、消すのがうまくいきません。メニューバーの要素をクリックするとサブメニューが消えるのですが、それ以外の部分を押しても消えません。
wholePage
変数にcontainer
クラスの要素を取得するように書いてみてもうまくいきませんでした。
ご教授お願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。