Sidebar Sub Menu Bootstrap dan FontAwesome

Posted on

Sidebar adalah elemen umum dalam desain web yang memungkinkan kita dengan mudah mengakses berbagai bagian dari situs web. Dalam tutorial ini, kita akan belajar cara membuat sidebar dengan sub menu Bootstrap dan FontAwesome. Sidebar ini akan berisi beberapa item menu utama dan beberapa sub-menu yang dapat di-expand dan di-collapse.

1. Menyiapkan Dasar HTML

Untuk dasar HTML nya adalah sebagai berikut:

<div class="container-fluid">
        <div class="row">
            <nav id="sidebar" class="col-md-3 col-lg-2 d-md-block sidebar mt-5">
                <div class="position-sticky">
                    <ul class="nav flex-column">
                        <li class="nav-item">
                            <a class="nav-link active" href="#">
                                Beranda
                            </a>
                        </li>
                        <li class="nav-item has-submenu">
                            <a class="nav-link" href="#">
                                <i class="fa-solid fa-chevron-right fa-xs" id="arrow-icon"></i>
                                Menu 1
                            </a>
                            <ul class="submenu collapse">
                                <li><a class="nav-link" href="#">Submenu item 1</a></li>
                                <li><a class="nav-link" href="#">Submenu item 2</a></li>
                                <li><a class="nav-link" href="#">Submenu item 3</a></li>
                            </ul>
                        </li>
                        <li class="nav-item has-submenu">
                            <a class="nav-link" href="#">
                                <i class="fa-solid fa-chevron-right fa-xs" id="arrow-icon"></i>
                                Menu 2
                            </a>
                            <ul class="submenu collapse">
                                <li><a class="nav-link" href="#">Submenu item 1</a></li>
                                <li><a class="nav-link" href="#">Submenu item 2</a></li>
                                <li><a class="nav-link" href="#">Submenu item 3</a></li>
                            </ul>
                        </li>
                    </ul>
                </div>
            </nav>

            <main role="main" class="col-md-9 ml-sm-auto col-lg-10 px-md-4 mt-5">
                <h1>Konten</h1>
            </main>
        </div>
    </div>


2. Menambahkan Bootstrap & Fontawesome

Untuk membuat layout, saya menggunakan bootstrap dan icon saya gunakan fornawesome, berikut adalah CDN yang saya gunakan:

    <!-- Tambahkan Fontawesome-->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"
        integrity="sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />

 <!-- Tambahkan Bootstrap -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-4bw+/aepP/YC94hEpVNVgiZdgIC5+VKNBQNGCHeKRQN+PtmoHDEXuppvnDJzQIu9" crossorigin="anonymous">

    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/js/bootstrap.bundle.min.js"
        integrity="sha384-HwwvtgBNo3bZJJLYd8oVXjrBZt8cqVSpeBNS5n7C8IVInixGAoxmnlMuBnhbgrkm" crossorigin="anonymous">
        </script>


3. Menambah Kode JavaScript

Untuk melakukan animasi (membuka dan menutup) menu kita membutuhkan javascript seperti berikut:

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

    <!-- Kode JavaScript Anda -->
    <script>
        $(document).ready(function () {
            // Inisialisasi status ikon
            var iconRotated = false;

            $('.nav-link').click(function (e) {
                e.preventDefault();
                var $submenu = $(this).next('.submenu');
                var $arrowIcon = $(this).find('#arrow-icon');

                if ($submenu.length) {
                    var mycollapse = new bootstrap.Collapse($submenu[0]);

                    if ($submenu.hasClass('show')) {
                        mycollapse.hide();
                        $arrowIcon.css("transform", "rotate(0deg)");
                        iconRotated = false;
                    } else {
                        mycollapse.show();
                        if (iconRotated) {
                            $arrowIcon.css("transform", "rotate(0deg)");
                        } else {
                            $arrowIcon.css("transform", "rotate(90deg)");
                        }
                        iconRotated = !iconRotated;
                    }
                }
            });
        });
    </script>


4. Menyiapkan CSS

Untuk memberikan style dapat menggunakan css sebagai berikut:

 <style>
        .sidebar li .submenu {
            list-style: none;
            margin: 0;
            padding: 0;
            padding-left: 1rem;
            padding-right: 1rem;
        }

        .position-sticky {
            background-color: #f5f5f7;
        }
    </style>


5. Hasil

Dari kode diatas, hasilnya adalah sebagai berikut, silahkan di klik salah satu menu:



Semoga artikel Sidebar Sub Menu Bootstrap dan FontAwesome ini bermanfaat.

Baca juga: Simpan HTML menjadi Gambar