nisi246
@nisi246 (Nisiroku 246)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

多階層のアコーディオンメニューを作りたい。

アコーディオンメニューで3階層目まで表示したい、

例)
PHP HTML CSS JSを使用してアコーディオンメニューをつくっています。

2階層目までしか実装できない。

https://codepen.io/MrsColombo/pen/mEeQwy
コチラのサイトからコードを流用して構築しています。
元々2階層目までしか表示出来ない仕様だったようで、JSを書き換えて
3階層目まで表示できるようにした地です、

ご教授頂けたらと思います、ぜひよろしく御願い致します。

該当するソースコード

<nav class="subArea__nav  u-spHide">
                <ul class="accordion-menu">
                <li>
                    <div class="dropdownlink"><i class="fa fa-road" aria-hidden="true"></i> テキスト
                    <i class="fa fa-chevron-down" aria-hidden="true"></i>
                    </div>
                    <ul class="submenuItems">
                        <li><a href="#">テキスト</a>
                            <ul class="submenuItems2">
                                <li><a href="#">テキスト</a></li>
                                <li><a href="#">テキスト</a></li>
                            </ul>
                        </li>
                        <li><a href="#">「テキスト</a>
                            <ul>
                                <li><a href="#">テキスト</a></li>
                                <li><a href="#">テキスト</a>
                                    <ul>
                                        <li><a href="#">テキスト</a></li>
                                        <li><a href="#">テキスト</a></li>
                                        <li><a href="#">テキスト</a></li>
                                        <li><a href="#">テキスト</a></li>
                                    </ul>
                                </li>
                            </ul>
                        </li>
                        <li><a href="#">テキスト</a>
                            <ul>
                                <li><a href="#">テキスト</a></li>
                                <li><a href="#">テキスト</a></li>
                            </ul>
                        </li>
                        <li><a href="#">テキスト</a>
                            <ul>
                                <li><a href="#">テキスト</a></li>
                                    <li><a href="#">テキスト</a></li>
                                    <li><a href="#">テキスト</a></li>
                            </ul>
                        </li>
                    </ul>
                </li>
                <li>
                    <div class="dropdownlink"><i class="fa fa-paper-plane" aria-hidden="true"></i>テキスト
                    <i class="fa fa-chevron-down" aria-hidden="true"></i>
                    </div>
                    <ul class="submenuItems">
                        <li><a href="#">テキスト</a></li>
                        <li><a href="#">テキスト</a></li>
                        <li><a href="#">テキスト</a></li>
                        <li><a href="#">テキスト</a></li>
                        <li><a href="#">アクセス</a></li>
                        <li><a href="#">リンク</a></li>
                        <li><a href="#">周辺施設</a></li>
                    </ul>
                </li>
                <li>
                    <div class="dropdownlink"><i class="fa fa-quote-left" aria-hidden="true"></i>人然塾
                    <i class="fa fa-chevron-down" aria-hidden="true"></i>
                    </div>
                    <ul class="submenuItems">
                        <li><a href="#">テキスト</a></li>
                        <li><a href="#">テキスト</a></li>
                        <li><a href="#">テキスト</a></li>
                        <li><a href="#">テキスト</a></li>
                        <li><a href="#">テキスト</a></li>
                        <li><a href="#">テキスト</a></li>
                        <li><a href="#">テキスト</a></li>
                    </ul>
                </li>
                </ul>
            </nav>
        </div>
.subArea__nav{
        /*アコーディオンメニュー*/
        * {
            margin: 0;
            padding: 0;
          }
          body {
            font-family: 'Montserrat', sans-serif;
            background: #ee7b45;
          }
          ul {
            list-style: none;
          }
          a {
            text-decoration: none;
            color: #fff;
          }
          h2 {
            text-align: center;
            margin: 20px auto;
            color: #fff;
          }
          .accordion-menu {
            width: 100%;
            max-width: 350px;
            margin: 60px auto 20px;
          }
          .accordion-menu li.open .dropdownlink {
            background: $orange--1;
            .fa-chevron-down {
              transform: rotate(180deg);
            }
          }
          .accordion-menu li:last-child .dropdownlink {
            border-bottom: 0;
          }
          .dropdownlink {
            cursor: pointer;
            display: block;
            padding: 15px 15px 15px 45px;
            font-size: 18px;
            border-bottom: 1px solid #ccc;
            color: #fff;
            position: relative;
            transition: all 0.4s ease-out;
            i {
              position: absolute;
              top: 17px;
              left: 16px;
            }
            .fa-chevron-down {
              right: 12px;
              left: auto;
            }
          }
          .submenuItems {
            display: none;
            background: $orange;
            li {
              border-bottom: 1px solid #B6B6B6;
            }
          }
          .submenuItems a {
            display: block;
            color: #fff;
            padding: 12px 12px 12px 45px;
            transition: all 0.4s ease-out;
            &:hover {
              background: $orange--1;
            }
          }
          .submenuItems2{
            display: none;
            background: $orange;
            li {
              border-bottom: 1px solid #B6B6B6;
            }
          }
          .submenuItems2 a {
            display: block;
            color: #fff;
            padding: 12px 12px 12px 45px;
            transition: all 0.4s ease-out;
            &:hover {
              background: $orange--1;
            }
          }

    }

$(function() {
  var Accordion = function(el, multiple) {
    this.el = el || {};
    // more then one submenu open?
    this.multiple = multiple || false;

    var dropdownlink = this.el.find('.dropdownlink');
    dropdownlink.on('click',
                    { el: this.el, multiple: this.multiple },
                    this.dropdown);
  };

  Accordion.prototype.dropdown = function(e) {
    var $el = e.data.el,
        $this = $(this),
        //this is the ul.submenuItems
        $next = $this.next();

    $next.slideToggle();
    $this.parent().toggleClass('open');

    if(!e.data.multiple) {
      //show only one menu at the same time
      $el.find('.submenuItems ').not($next).slideUp().parent().removeClass('open');
    }

  }
  var accordion = new Accordion($('.accordion-menu'), false);
})

0

1Answer

元のリンクを参考に3階層目までバージョンを作ってみました。
3階層目を作ることを目的に、もともとあった機能を多少端折っています。
ご参考にしてください。

See the Pen Accordion menu by yotty (@yotty) on CodePen.

1Like

Comments

  1. @nisi246

    Questioner

    御教授頂き有難うございます!
    助かりました!
    大変勉強になります。本当に有難うございますっ!

Your answer might help someone💌