Home » How To » Cara Membuat Menu SideNav Dropdown

Cara Membuat Menu SideNav Dropdown

by Catur Kurnia Sari
by Catur Kurnia Sari

Pelajari cara menambahkan menu dropdown di dalam navigasi samping (sidenav) menggunakan CSS dan JavaScript.

Menu Dropdown di Sidenav

Contoh:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<style>
body {
  font-family: "Lato", sans-serif;
}

/* Sidenav Fixed, tinggi penuh */
.sidenav {
  height: 100%;
  width: 200px;
  position: fixed;
  z-index: 1;
  top: 0;
  left: 0;
  background-color: #111;
  overflow-x: hidden;
  padding-top: 20px;
}

/* Style link sidenav dan tombol dropdown */
.sidenav a, .dropdown-btn {
  padding: 6px 8px 6px 16px;
  text-decoration: none;
  font-size: 20px;
  color: #818181;
  display: block;
  border: none;
  background: none;
  width: 100%;
  text-align: left;
  cursor: pointer;
  outline: none;
}

/* Saat mengarahkan mouse */
.sidenav a:hover, .dropdown-btn:hover {
  color: #f1f1f1;
}

/* Konten Utama */
.main {
  margin-left: 200px; /* Sama dengan lebar sidenav */
  font-size: 20px; /* Teks yang ditingkatkan untuk mengaktifkan pengguliran */
  padding: 0px 10px;
}

/* Tambahkan kelas active ke tombol dropdown active */
.active {
  background-color: green;
  color: white;
}

/* Kontainer dropdown (disembunyikan secara default). Opsional: tambahkan warna background yang lebih terang dan beberapa padding kiri untuk mengubah desain konten dropdown */
.dropdown-container {
  display: none;
  background-color: #262626;
  padding-left: 8px;
}

/* Opsional: Beri style ikon sisipan */
.fa-caret-down {
  float: right;
  padding-right: 8px;
}

/* Query media untuk responsif */
@media screen and (max-height: 450px) {
  .sidenav {padding-top: 15px;}
  .sidenav a {font-size: 18px;}
}
</style>
</head>
<body>

<div class="sidenav">
  <a href="#about">About</a>
  <a href="#services">Services</a>
  <a href="#clients">Clients</a>
  <a href="#contact">Contact</a>
  <button class="dropdown-btn">Dropdown 
    <i class="fa fa-caret-down"></i>
  </button>
  <div class="dropdown-container">
    <a href="#">Link 1</a>
    <a href="#">Link 2</a>
    <a href="#">Link 3</a>
  </div>
  <a href="#contact">Search</a>
</div>

<div class="main">
  <h2>Sidebar Dropdown</h2>
  <p>Klik pada tombol dropdown untuk membuka menu dropdown di dalam navigasi samping.</p>
  <p>Sidebar dengan tinggi penuh (100%) dan selalu ditampilkan.</p>
  <p>Ini teks ini teks..</p>
</div>

<script>
/* Ulangi semua tombol dropdown untuk beralih antara menyembunyikan dan menampilkan konten dropdown - Ini memungkinkan pengguna untuk memiliki beberapa dropdown tanpa konflik*/
var dropdown = document.getElementsByClassName("dropdown-btn");
var i;

for (i = 0; i < dropdown.length; i++) {
  dropdown[i].addEventListener("click", function() {
  this.classList.toggle("active");
  var dropdownContent = this.nextElementSibling;
  if (dropdownContent.style.display === "block") {
  dropdownContent.style.display = "none";
  } else {
  dropdownContent.style.display = "block";
  }
  });
}
</script>

</body>
</html> 

Buat Sidebar Dropdown

Langkah 1) Tambahkan HTML

Contoh:

<div class="sidenav">
  <a href="#about">About</a>
  <a href="#services">Services</a>
  <a href="#clients">Clients</a>
  <a href="#contact">Contact</a>
  <button class="dropdown-btn">Dropdown
    <i class="fa fa-caret-down"></i>
  </button>
  <div class="dropdown-container">
    <a href="#">Link 1</a>
    <a href="#">Link 2</a>
    <a href="#">Link 3</a>
  </div>
  <a href="#contact">Search</a>
</div>

Penjelasan Contoh

Gunakan elemen apa pun untuk membuka menu dropdown, misalnya <button> , elemen <a> atau <p>.

Gunakan elemen kontainer (seperti <div>) untuk membuat menu dropdown dan menambahkan link dropdown di dalamnya. Kami akan menggunakan style yang sama untuk semua link di dalam sidenav.

Langkah 2) Tambahkan CSS

Contoh:

/* Sidenav Fixed, Tinggi penuh */
.sidenav {
  height: 100%;
  width: 200px;
  position: fixed;
  z-index: 1;
  top: 0;
  left: 0;
  background-color: #111;
  overflow-x: hidden;
  padding-top: 20px;
}

/* Beri style pada link sidenav dan tombol dropdown */
.sidenav a, .dropdown-btn {
  padding: 6px 8px 6px 16px;
  text-decoration: none;
  font-size: 20px;
  color: #818181;
  display: block;
  border: none;
  background: none;
  width:100%;
  text-align: left;
  cursor: pointer;
  outline: none;
}

/* Saat mengarahkan mouse */
.sidenav a:hover, .dropdown-btn:hover {
  color: #f1f1f1;
}

/* Konten Utama */
.main {
  margin-left: 200px; /* Sama dengan lebar sidenav */
  font-size: 20px; /* Teks yang ditingkatkan untuk mengaktifkan pengguliran */
  padding: 0px 10px;
}

/* Tambahkan kelas active ke tombol dropdown active */
.active {
  background-color: green;
  color: white;
}

/* Kontainer dropdown (disembunyikan secara default). Opsional: tambahkan warna background yang lebih terang dan beberapa padding kiri untuk mengubah desain konten dropdown */
.dropdown-container {
  display: none;
  background-color: #262626;
  padding-left: 8px;
}

/* Opsional: Beri style ikon sisipan */
.fa-caret-down {
  float: right;
  padding-right: 8px;
}

/* Query media untuk responsif */
@media screen and (max-height: 450px) {
  .sidenav {padding-top: 15px;}
  .sidenav a {font-size: 18px;}
}

Langkah 3) Tambahkan JavaScript

Contoh:

/* Ulangi semua tombol dropdown untuk beralih antara menyembunyikan dan menampilkan konten dropdown - Ini memungkinkan pengguna untuk memiliki beberapa dropdown tanpa konflik*/
var dropdown = document.getElementsByClassName("dropdown-btn");
var i;

for (i = 0; i < dropdown.length; i++) {
  dropdown[i].addEventListener("click", function() {
  this.classList.toggle("active");
  var dropdownContent = this.nextElementSibling;
  if (dropdownContent.style.display === "block") {
  dropdownContent.style.display = "none";
  } else {
  dropdownContent.style.display = "block";
  }
  });
}

You may also like