どうも7noteです。シンプルな押したら開くメニューの作り方。
よく使われる、タップやクリックで開くメニューの作り方です。
作り方
index.html
<ul class="menu">
<li>
<p>メニュー1</p>
<ul class="submenu">
<li>あああ</li>
<li>いいい</li>
<li>ううう</li>
</ul>
</li>
<li>
<p>メニュー2</p>
<ul class="submenu">
<li>えええ</li>
<li>おおお</li>
<li>かかか</li>
</ul>
</li>
<li>
<p>メニュー3</p>
<ul class="submenu">
<li>ききき</li>
<li>くくく</li>
<li>けけけ</li>
<li>こここ</li>
</ul>
</li>
</ul>
style.css
.submenu {
display: none;
}
p {
cursor: pointer;
}
script.js
$(function(){
$(".menu li p").on("click", function(){ // .menuのliがクリックされた時
$(this).next(".submenu").not(':animated').slideToggle(); // クリックされたliの中にある.submenuの表示非表示を切りかえる
});
});
※jQeryを使用しています。(jQueryって何?という方はこちら)
解説
jQeryを使用した方法ではシンプルな構造だとと思います。
今回のメニューでは、1度開いたメニューはクリックしない限り開きっぱなしになります。
script.jsの途中で、.not(':animated')
がありますが、これがあることによってアニメーション中はクリックされても動かないようになっています。
誤ってダブルクリックされても、メニューが閉じずに開いた状態になります。
まとめ
すごくシンプルですが、よく使う仕組みなので基本的な作り方は覚えておいてもいいかなと思います。
headerのメニューなどに使ったり、faqページでも使うことが多いです。