ドロワーメニューとアコーディオンメニューを組み合わせてみた

今回は、ドロワーメニューの中にアコーティオンメニューを組み込んでみました。

ドロワーメニューについては、前回やっています。
興味があれば、是非参考にしてくださいね。
[ドロワーメニューを作ってみた2](https://qiita.com/yu-chan/items/7c88b4541299af0ae8dd)

また、アコーディオンメニューについては、次を参考にされてください。
[アコーディオンメニューをやってみた2](https://qiita.com/yu-chan/items/e592679777a0b656e748)

#ソース

では、いつもどおりソースを載せておきますね。

```drower_practice.html
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ドロワーメニュー　練習</title>
    <link rel="stylesheet" type="text/css" href="./css/slide.css">
    <script src="https://code.jquery.com/jquery-3.2.1.js"></script>
    <script src="./js/slide.js"></script>
</head>

<body>
    <div class="drower_menu">
        <img src="./img/drower_open.png" alt="drower_open" id="drower_open" class="flag_on">
        <img src="./img/drower_close.png" alt="drower_close" id="drower_close" class="flag_off">
        <nav id="drower_menu_list">
            <ul class="close">
                <div class="accordion">
                    <li><a href="#">メニュー1</a></li>
                    <!-- アコーティオンメニュー -->
                    <ul>
                        <li><a href="#">サブメニュー1.1</a></li>
                        <li><a href="#">サブメニュー1.2</a></li>
                    </ul>
                </div>

                <div class="accordion">
                    <li><a href="#">メニュー2</a></li>
                    <ul>
                        <li><a href="#">サブメニュー2.1</a></li>
                        <li><a href="#">サブメニュー2.2</a></li>
                    </ul>
                </div>

                <div class="accordion">
                    <li><a href="#">メニュー3</a></li>
                    <ul>
                        <li><a href="#">サブメニュー3.1</a></li>
                        <li><a href="#">サブメニュー3.2</a></li>
                    </ul>
                </div>

                <div class="accordion">
                    <li><a href="#">メニュー4</a></li>
                    <ul>
                        <li><a href="#">サブメニュー4.1</a></li>
                        <li><a href="#">サブメニュー5.2</a></li>
                    </ul>
                </div>

                <div class="accordion">
                    <li><a href="#">メニュー5</a></li>
                    <ul>
                        <li><a href="#">サブメニュー5.1</a></li>
                        <li><a href="#">サブメニュー5.2</a></li>
                    </ul>
                </div>
            </ul>
        </nav>
    </div>
</body>

</html>
```

```slide.css
.drower_menu img {
    position: fixed;
    top: 20px;
    right: 20px;
    display: inline-block;
    opacity: 1;
    transform: translateX(0);
    transition: all .5s;
}

.drower_menu img.flag_on {
    z-index: 100;
    opacity: 1;
}

.drower_menu img.flag_on:hover {
    cursor: pointer;
}

.drower_menu img.flag_off {
    z-index: 99;
    opacity: 0;
}

#drower_menu_list {
    height: 100%;
    width: 250px;
    position: fixed;
    top: 0;
    right: 0;
    z-index: 0;
    padding-top: 100px;
    background-color: rgb(16, 69, 153, 0.8);
    transform: translateX(250px);
    transition: all .5s;
}

#drower_menu_list ul {
    list-style: none;
}

#drower_menu_list li {
    text-align: left;
    padding: 10px 0;
    list-style: none;
}

#drower_menu_list a {
    color: white;
    text-decoration: none;
}

#drower_menu_list.open {
    transform: translateX(0)
}

.accordion ul {
  margin: 0;
  padding: 0;
  list-style: none;
  display: none;
}

.accordion ul li {
  margin: 0;
  margin-left: 30px;
  padding: 0;
}

.accordion a {
  margin: 0;
  padding: 0;
  text-decoration: none;
}
```

```slide.js
$(function ($) {

    // ドロワーメニューの三本線をクリックした時、メニューが開く
    $('#drower_open').on('click', function () {
        if ($(this).hasClass('flag_on')) {
            $(this).removeClass('flag_on');
            $(this).addClass('flag_off');
            $('#drower_close').removeClass('flag_off');
            $('#drower_close').addClass('flag_on');
            $('#drower_menu_list').removeClass('close');
            $('#drower_menu_list').addClass('open');
        }
    });

    // ドロワーメニューの×をクリックした時、メニューを閉じる
    $('#drower_close').on('click', function () {
        if ($(this).hasClass('flag_on')) {
            $(this).removeClass('flag_on');
            $(this).addClass('flag_off');
            $('#drower_open').removeClass('flag_off');
            $('#drower_open').addClass('flag_on');
            $('#drower_menu_list').removeClass('open');
            $('#drower_menu_list').addClass('close');
        }
    });

    // ドロワーメニューをクリックした時、サブメニューを開く
    $('.accordion li').click(function () {
        $(this).next('ul').slideToggle();
    });
});
```

#解説
実装方法は[ドロワーメニューを作ってみた2](https://qiita.com/yu-chan/items/7c88b4541299af0ae8dd)と[アコーディオンメニューをやってみた2](https://qiita.com/yu-chan/items/e592679777a0b656e748)を組み合わせています。
なので、難しいことはやっていません。