Membuat menu Responsive Pure CSS dengan Icon Burger

Responsive Menu

Pure CSS Burger Menu - Pada tutorial kali ini saya akan menjelaskan Cara membuat Menu Responsive dengan icon Burger pure CSS tanpa JavaScript. Mungkin anda sering melihat Menu navigasi ketika menggunakan media kecil seperti HP muncul Garis Tiga , itulah yang dinamakan icon Burger, ya kalau diperhatikan mirip hamburger.

Tutorial ini merupakan kelanjutan dari tutorial sebelumnya Step By Step Memahami Pembuatan Menu Dropdown. Jadi silahkan ikuti dulu tutorial tersebut dan kita akan lanjutkan membuat menu tersebut menjadi responsive (Silahkan download sourcenya untuk mempelajarinya). Oke kita lanjutkan ke langkah berikutnya.

Menambah Icon Burger

Setelah kita membuat menu Dropdown sebelumnya, kita akan menambahkan icon toggle nya berupa icon burger. Tambahkan HTML ini sebelum header.

<input type="checkbox" class="openMenu" id="openMenu"/>
  <label for="openMenu" class="ToggleIcon">
    <div class="spinner diagonal part-1"></div>
    <div class="spinner horizontal"></div>
    <div class="spinner diagonal part-2"></div>
</label>

Tambahkan CSS ini

/* Toggle Icon Burger) */
.ToggleIcon {
  transition: all 0.3s;
  box-sizing: border-box;
  cursor: pointer;
  position: absolute;
  z-index: 99;
  height: 100%;
  width: 100%;
  top: 27px; /* jarak icon burger dari atas */
  right: 27px;  /* jarak icon burger dari kanan */
  height: 22px; /* sesuaikan ukuran */
  width: 22px;	
}
.spinner {
  transition: all 0.3s;
  box-sizing: border-box;
  position: absolute;
  height: 3px;
  width: 100%;
  background-color: #fff;
  display:block;
}
.horizontal {
  transition: all 0.3s;
  box-sizing: border-box;
  position: relative;
  float: left;
  margin-top: 3px;
}
.diagonal.part-1 {
  position: relative;
  transition: all 0.3s;
  box-sizing: border-box;
  float: left;
}
.diagonal.part-2 {
  transition: all 0.3s;
  box-sizing: border-box;
  position: relative;
  float: left;
  margin-top: 3px;
}

Kemudian, supaya diklik menjadi silang (X) maka tambahakan lagi dibawahnya CSS ini :

/* 	Efek icon burger berganti menjadi silang */
input[type=checkbox]:checked ~ .ToggleIcon > .horizontal {
  transition: all 0.3s;
  box-sizing: border-box;
  opacity: 0;
}
input[type=checkbox]:checked ~ .ToggleIcon > .diagonal.part-1 {
  transition: all 0.3s;
  box-sizing: border-box;
  transform: rotate(135deg);
  margin-top: 8px;
}
input[type=checkbox]:checked ~ .ToggleIcon > .diagonal.part-2 {
  transition: all 0.3s;
  box-sizing: border-box;
  transform: rotate(-135deg);
  margin-top: -9px;
}

input.openMenu {
  position: fixed;
  top: -100px;
  opacity: 0
}

Nah, sampai di sini, icon akan muncul di kanan atas, tapi ketika diklik belum memberikan efek apa pun terhadap menu, hanya memunculkan dulu icon.

Menyembunyikan Icon Burger

Setelah icon kita buat, maka sekarang kita akan sembunyikan dan nanti akan dimunculkan pada layar berukuran kecil, tergantung kita seting di media queries berpa px. Tambahkan CSS ini :

/*	Sembunyikan Icon Burger */
label.ToggleIcon {
  display: none;
}

Menampilkan Icon dan Menu Horizontal

Sekarang kita akan munculkan icon burger, sekaligus menghilangkan menu Horizontal berganti menjadi Vertikal. Saya set di media queries 960px, silahkan atur sesuai keinginan. Tambahkan CSS ini :

/*	Pada ukuran layar 960px mulai pengaturan Responsive */
@media screen and (max-width:960px){
#menu {
  display:none; /* menu horizantal disembunyikan */
}	
label.ToggleIcon {
  display:block; /* burger icon dimunculkan */
}

/* Merubah menu menjadi vertikal ketika Burger icon diklik*/
input[type="checkbox"]:checked ~ #menu {
  display: block;
  width: 100%;
  background: #777;
  position: fixed;
  top: 70px;
  left: 0;
  height: 100vh;
  overflow-y: visible;
  padding: 10px 0 0 0;
  scrollbar-width: none;
  scrollbar-width: none;
  -webkit-animation-name: slideInLeft;
  animation-name: slideInLeft;
  -webkit-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  z-index: 9999;
}
input[type="checkbox"]:checked ~ #menu li {
  position: relative;
  margin:0;
  display: block;
  text-align: left;
  float:none;
}
input[type="checkbox"]:checked ~ #menu ul.menus{
  height:auto;
  overflow:hidden;
  width:100%;
  background:#666;
  position:relative;
}
input[type=checkbox] {
  transition: all 0.3s;
  box-sizing: border-box;
  display: none;
}

Menambah Efek Slide in

Pada hasil di atas, munculan menu vertikal masih terasa kasar, kita akan haluskan dengan pergeseran menu dari sebelah kiri. Tammbahkan CSS ini:

/* Memberikan efek slide muncul dari kiri */
@-webkit-keyframes slideInLeft {
 0%{
  -webkit-transform: translateX(-100%);
  transform: translateX(-100%);
  visibility: visible;
  }
  100% {
  -webkit-transform: translateX(0);
  transform: translateX(0);
  }
  }
  @keyframes slideInLeft {
0% {
  -webkit-transform: translateX(-100%);
  transform: translateX(-100%);
  visibility: visible;
  }
100% {
  -webkit-transform: translateX(0);
  transform: translateX(0);
   }
   }
}

Sampai sini, kita telah selesai membuat menu Responsive murni CSS tanpa Java Script.

Update 19-04-2023 Penambahan Background Overlay

Manambahkan Background Overlay

1. Edit width:100% pada CSS diatas (boleh menggunakan % atau px, saya menggunakan ukuran width:230px

input[type="checkbox"]:checked ~ #menu {
  display: block;
  width: 100%;
  ..........

2. Tambahkan CSS ini

#overlay{
    display: block;
    position: fixed;
    top: 70px;
    left: -50%;
    right: -50%;
    bottom: -50%;
    z-index: 1;
    transition: all .1s ease;
    background: transparent;
    opacity: 0;
    visibility: hidden;
}
input[type="checkbox"]:checked ~ #overlay {
    opacity: 1;
    visibility: visible;
    background: rgba(0,0,0,.2);
    -webkit-backdrop-filter: saturate(180%) blur(10px);
    backdrop-filter: saturate(180%) blur(5px);
}

3. Simpan kode ini di bawah </nav>

<div id="overlay"></div>
Update 04-09-2024 Klik Overlay untuk Close

Penambahan Klik Overlay untuk Close

Pada DEMO di atas, untuk Close hanya mengklik icon burger. Selanjutnya saya akan menambahkan ketika background overlay diklik, menu akan tertutup.

Tambahkan CSS ini

.closeOverlay {
  position: absolute;
  top: 70px;
  right: 0;
  bottom: 0;
  left: 0;
  cursor: pointer;
  z-index:999;
  display:none;
}
input[type="checkbox"]:checked ~ .closeOverlay {
  display:block
}

Kemudian Copy code ini

<label class="closeOverlay" for="openMenu"></label>

Simpan di atas kode

<label for="openMenu" class="ToggleIcon">

Lengkapnya seperti ini

<input type="checkbox" class="openMenu" id="openMenu"/>
<label class="closeOverlay" for="openMenu"></label>
  <label for="openMenu" class="ToggleIcon">
    <div class="spinner diagonal part-1"></div>
    <div class="spinner horizontal"></div>
    <div class="spinner diagonal part-2"></div>
</label>

Selamat Mencoba..

Berita Lebih Baru Berita Lebih Lama
  • Admin
    Profil: https://www.blogger.com/profile/08694528231248526313
    01 April, 2021

    Mantap temanya.. 👍

    • Kang Ismet
      Profil:https://www.blogger.com/profile/07706142952405337288
      01 April, 2021

      ada yang ngasih hehhee

  • Rekha Jha
    Profil: https://www.blogger.com/profile/10780483256563363567
    02 April, 2021

    Hello sir please check my email to you with email id [email protected]

    • Kang Ismet
      Profil:https://www.blogger.com/profile/07706142952405337288
      04 April, 2021

      ok.. wait for reply

  • Widodo
    Profil: https://www.blogger.com/profile/03821833848203083148
    03 April, 2021

    keren themanya inspirasi untuk ngeblogger

    • Kang Ismet
      Profil:https://www.blogger.com/profile/07706142952405337288
      04 April, 2021

      thanks mas... semangat terus ngeblognya, sukses juga buat usaha las listriknya

  • Srie Nuryani
    Profil: https://www.blogger.com/profile/04565226769067705755
    04 April, 2021

    assalanualaikum kang ismet salam kenal

    • Kang Ismet
      Profil:https://www.blogger.com/profile/07706142952405337288
      04 April, 2021

      waalaikumussalam, sama2... keren blognya mengajarkan tips-tips bermanfaat

  • Khoirun Naim
    Profil: http://radarpedia.com
    08 April, 2021

    Klo menunya fixs bisa gak kang

    • Kang Ismet
      Profil:https://www.blogger.com/profile/07706142952405337288
      08 April, 2021

      fiks gimana?

  • wb7themes
    Profil: https://www.blogger.com/profile/03595708668059388735
    11 Oktober, 2021

    Setelah nyari muter muter ketemu disini yang saya suka, terimakasih kang.

  • Made Brana
    Profil: https://www.blogger.com/profile/10010978855619686695
    12 Desember, 2022

    Selamat sore bang.. aku sudah coba buat sama dengan kode nya abang, tapi kok burger ikon saya gak bisa ya ?

    • Kang Ismet
      Profil:https://www.blogger.com/profile/07706142952405337288
      18 April, 2023

      linknya mana mas?

  • 72Lite.com
    Profil: https://www.blogger.com/profile/04557021583299941165
    18 April, 2023

    Kang. Saya pakai menu navigasi ini. Tapi bisa request gak. Menunya versi mobile dibikin 70% saja. Terus sisa 30% nya dibikin blur. Kayaknya keren. Ditunggu jawabannya kang.

    • Kang Ismet
      Profil:https://www.blogger.com/profile/07706142952405337288
      18 April, 2023

      di ujicoba aja mas, pada CSS input[type="checkbox"]:checked ~ #menu { width nya diubah misal 50% atau berapa aja. kalau mau ada objek blur berarti harus 2 objek

    • 72Lite.com
      Profil:https://www.blogger.com/profile/04557021583299941165
      18 April, 2023

      Berarti satu objek dibikin 70%, 1 objeknya lg dibikin 100% gitu ya kang? Atau bisa kasih kode css nya untuk objek keduanya kang. Biar saya pasang di blog saya.

      Soalnya masih belum paham bikinnya.

    • Kang Ismet
      Profil:https://www.blogger.com/profile/07706142952405337288
      19 April, 2023

      saya sudah update tutorial ini, silahkan liat di Penambahan Background Overlay

    • 72Lite.com
      Profil:https://www.blogger.com/profile/04557021583299941165
      19 April, 2023

      Wah makasih banyak kang. Fast respon banget nih. Nanti saya request tutorial lagi. Hehehe

  • Repick.biz.id
    Profil: https://www.blogger.com/profile/15702097670189138918
    20 Juli, 2023

    Kang, menu dropdownnya kan kalo di klik ngebuka kebawah, nah ada satu masalah, ketika di klik kembali gak mau nutup. Tolong di perbaiki kang

    • Kang Ismet
      Profil:https://www.blogger.com/profile/07706142952405337288
      04 September, 2024

      Sudah ditambahkan klik Overlay.. silahkan coba lagi Kang

Tambahkan Komentar
comment url
Terima kasih telah berkomentar di Blog Kang Ismet.
  • Untuk menyisipkan Gambar, Kode, atau Kutipan silahkan klik Tab Sisipkan di atas.
  • Emoji yang bisa digunakan pada komentar :), :D, :( <3, :love dan :top
  • Untuk melihat Komentar yang telah ditambah sisipan kunjungi DEMO
Masukkan URL Gambar atau Potongan Kode, atau Quote, lalu klik tombol yang kamu inginkan untuk di-parse. Klik tombol Salin Kode! lalu paste ke kolom komentar.


image quote pre code
20 Komentar