アコーディオンメニューDEMO

jQueryを使った簡単なアコーディオンメニュー

chihuahua bowwow

アコーディオンメニューDEMO

基本形(2階層)




基本形(3階層)




開いているメニューと閉じているメニューが混在




jQuery

<script>
$(function () {
  $('nav .toggle_menu').click(function() {
    $(this).next('ul').slideToggle();
  });
  $('li').click(function(e) {
    $(this).children('ul').slideToggle();
    e.stopPropagation();
  });
});
</script>

※親メニューは .toggle_menu のクリックで、子メニューは li のクリックで ul 内が開いたり閉じたりするだけです。
jQueryは、1.9以降を用意してください。




CSS

CSSは汚いです、ごめんなさい。でも、難しいことは何もしていないので、みれば分かると思います。

一応ポイントは .open_close .close_open だけですね。 あとは、親メニューのpaddingを .ad10p 調整しているだけです。

ul, li {
  padding: 0;
  margin: 0;
}
.ac_menu {
  width: 300px;
  padding: 0 ;
  margin: 0;
  list-style: none;
  border-radius:7px;
  border: 1px solid #aaaaaa;
}
.ac_menu p {
  color: #ffffff;
  font-size: 16px;
  line-height: 3.0;
  padding-left: 10px;
  margin: 0;
}
.toggle_menu {
  cursor: pointer;
  background-color: #b2b2b2;
}
.open_close {
  display: block;
}
.close_open {
  display: none;
}
.oya_1 {
  color: #ffffff;
  font-size: 14px;
  line-height: 3.0;
  background-color: #c3c3c3;
}
.oya_2 {
  color: #ffffff;
  font-size: 14px;
  line-height: 3.0;
  background-color: #d4d4d4;
}
.ad10p{
  padding-left: 10px;
}
nav li {
  font-size: 14px;
  line-height: 3.0;
  cursor: pointer;
  width: 100%;
  background-color: #e5e5e5;
  border-top: 1px solid #aaaaaa;
  display: block;
}
nav li a{
  color: #555555;
  padding-left: 10px;
  display: block;
}
nav li a:hover {
  color: #0000FF;
}




HTML

HTMLサンプルは、開いているメニューと閉じているメニューが混在しているタイプを紹介しておきます。
開いている状態から閉じるか、閉じている状態から開くのかは、
<ul> のクラス指定で、.open_close と .close_openの違いです。
2階層にしても、3階層にしても、必要な部分の <ul>~~</ul> を使えばいいと思います。
メディアクエリでレスポンシブ化するときにも、.open_close の display: block; → display: none;だけかな?

混在型 HTML

<section>
  <nav class="ac_menu">
    <p class="toggle_menu">メニュータイトル</p>
    <ul class="open_close">
      <li><a href="#">ただのメニュー1階層</a></li>
      <li><a href="#">ただのメニュー1階層</a></li>
      <li><a href="#">ただのメニュー1階層</a></li>
      <li class="oya_1"><span class="ad10p">親メニュー1階層 閉→開</span>
        <ul class="close_open">
          <li class="oya_2"><span class="ad10p">親メニュー2階層 閉→開</span>
            <ul class="close_open">
              <li><a href="#">子メニュー3階層</a></li>
              <li><a href="#">子メニュー3階層</a></li>
            </ul>
          </li>
          <li class="oya_2"><span class="ad10p">親メニュー2階層 閉→開</span>
            <ul class="close_open">
              <li><a href="#">子メニュー3階層</a></li>
              <li><a href="#">子メニュー3階層</a></li>
            </ul>
          </li>
        </ul>
      </li>
    </ul>
    <ul class="open_close">
      <li class="oya_1"><span class="ad10p">親メニュー1階層 開→閉</span>
        <ul class="close_open">
          <li><a href="#">子メニュー2階層</a></li>
          <li><a href="#">子メニュー2階層</a></li>
        </ul>
      </li>
    </ul>
  </nav>
</section>