0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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

ドロワーメニューについては、前回やっています。
興味があれば、是非参考にしてくださいね。
ドロワーメニューを作ってみた2

また、アコーディオンメニューについては、次を参考にされてください。
アコーディオンメニューをやってみた2

#ソース

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

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アコーディオンメニューをやってみた2を組み合わせています。
なので、難しいことはやっていません。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?