Main Logo
  • Home
  • About
  • Kursus
    • Paket Kursus
    • Roadmap Profesi
    • Data & AI
      • Data Analyst
      • Data Scientist
      • AI Engineer
      • Data Engineer
      • Business Intelligence (BI) Specialist
    • Infrastruktur & Keamanan
      • Network Engineer
      • System Engineer
      • DevOps Engineer
      • Security Engineer
      • Cloud Engineer
    • Programming & Web Development
      • Web & App Developer
      • Web Developer
      • WordPress Developer
      • Mobile Developer
    • Spesialisasi
      • Blockchain Engineer
      • IOT Engineer
      • Digital Marketing Specialist
  • Elearning
  • Blog
  • Portfolio
Daftar
Main Logo
  • Home
  • About
  • Kursus
    • Paket Kursus
    • Roadmap Profesi
    • Data & AI
      • Data Analyst
      • Data Scientist
      • AI Engineer
      • Data Engineer
      • Business Intelligence (BI) Specialist
    • Infrastruktur & Keamanan
      • Network Engineer
      • System Engineer
      • DevOps Engineer
      • Security Engineer
      • Cloud Engineer
    • Programming & Web Development
      • Web & App Developer
      • Web Developer
      • WordPress Developer
      • Mobile Developer
    • Spesialisasi
      • Blockchain Engineer
      • IOT Engineer
      • Digital Marketing Specialist
  • Elearning
  • Blog
  • Portfolio

Navbar Berantakan di HP? Ini Rahasia Bikin Navbar Responsive Auto Rapi Pakai Flexbox

  • September 9, 2026
  • oleh Sandya Gifta Ulimaz Sofiamagaski

Kenapa ya navbar yang di laptop terlihat rapi banget, begitu dibuka di HP malah jadi berantakan? Tombolnya numpuk, teksnya kepotong, atau malah ada elemen yang keluar dari layar sampai kamu harus scroll ke samping cuma buat lihat menu “Kontak”. Kalau kamu pernah bertanya-tanya kenapa hal ini terus berulang di project-project kamu, kemungkinan besar jawabannya bukan karena kamu kurang teliti, tapi karena ada satu fondasi konsep yang belum benar-benar kamu pahami.

Masalahnya bukan karena kamu nggak bisa CSS. Masalahnya karena banyak yang belajar membuat navbar dengan cara “menghafal kode dari tutorial”, bukan memahami logika di baliknya. Begitu ukuran layar berubah sedikit saja, semuanya runtuh, karena fondasinya memang nggak dirancang untuk fleksibel dari awal.

Kabar baiknya, ada satu tools CSS yang bisa menyelesaikan masalah ini tanpa perlu framework apapun, tanpa Bootstrap, tanpa Tailwind: Flexbox. Cukup CSS native yang sudah didukung semua browser modern. Di artikel ini kita akan bikin navbar responsive dari nol, step by step, sampai kamu benar-benar paham kenapa setiap baris kodenya ditulis seperti itu, bukan sekadar copy-paste tanpa ngerti.

Kenapa Navbar Sering Jadi Sumber Masalah?

Coba pikirkan sejenak, dari semua bagian website, navbar adalah elemen yang paling sering dilihat pengunjung. Dia muncul di setiap halaman, biasanya di posisi paling atas, dan jadi hal pertama yang dilihat orang begitu website terbuka. Kalau navbar-nya berantakan, kesan pertama yang didapat pengunjung langsung negatif, bahkan sebelum mereka sempat baca konten websitenya sama sekali.

Selain itu, navbar juga elemen yang paling banyak “tuntutan”-nya. Dia harus menampung logo, beberapa link menu, kadang search bar, kadang tombol call-to-action seperti “Daftar” atau “Login”, dan semua itu harus tetap rapi baik di layar desktop yang lebar maupun di layar HP yang sempit. Nggak heran kalau navbar sering jadi salah satu bagian paling sering di-redesign ulang dalam proses development.

Sebelum era Flexbox, developer biasanya mengandalkan float, inline-block, atau bahkan position: absolute untuk mengatur layout navbar. Cara-cara ini bisa jalan, tapi ribet banget kalau elemen-elemennya harus menyesuaikan ukuran layar secara dinamis. Kamu harus itung-itungan lebar secara manual dalam persen atau piksel, dan begitu ada elemen baru ditambahkan (misalnya tiba-tiba butuh nambah menu “Blog”), seringnya semua perhitungan itu berantakan lagi dan kamu harus otak-atik ulang dari awal.

Apa Sebenarnya Flexbox Itu?

Flexbox, atau nama lengkapnya Flexible Box Layout, adalah sebuah mode layout di CSS yang dirancang khusus untuk mengatur elemen-elemen dalam satu dimensi, entah itu horizontal (baris) atau vertikal (kolom). Ini beda dengan CSS Grid yang dirancang untuk layout dua dimensi sekaligus (baris dan kolom bersamaan).

Untuk kebutuhan navbar, Flexbox ini pas banget, karena pada dasarnya navbar itu cuma satu baris elemen yang perlu disusun rapi. Kamu tinggal kasih tahu browser, “susun elemen-elemen ini secara horizontal, kasih jarak yang rata, dan sejajarkan secara vertikal”, lalu browser yang akan menghitung semua ukuran dan posisinya secara otomatis. Kamu nggak perlu lagi pusing menghitung lebar setiap elemen dalam persen atau piksel secara manual.

Konsep dasar dari Flexbox ada dua peran: flex container (elemen induk yang diberi display: flex) dan flex item (elemen-elemen anak di dalamnya). Semua pengaturan arah, jarak, dan perataan dilakukan di flex container, sementara flex item-nya otomatis mengikuti aturan yang sudah ditetapkan.

Langkah 1: Siapkan Struktur HTML

Kita mulai dari struktur dasarnya dulu, sebelum masuk ke CSS. Navbar pada umumnya punya tiga bagian utama: logo di kiri, menu navigasi di tengah atau kanan, dan mungkin tombol aksi seperti “Login” atau “Daftar” di ujung kanan.

<!DOCTYPE html>
<html lang="id">
<head>
  <meta charset="UTF-8">
  <!-- Wajib ada: tanpa baris ini, media query di CSS nggak akan terbaca benar di HP -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Navbar Responsive</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>

<!-- Elemen <nav> dipakai karena ini section navigasi, bukan <div> biasa -->
<nav class="navbar">
  <div class="logo">MyBrand</div>

  <!-- <ul>/<li> dipakai karena menu memang sekumpulan link yang berkaitan -->
  <ul class="nav-links">
    <li><a href="#">Beranda</a></li>
    <li><a href="#">Tentang</a></li>
    <li><a href="#">Layanan</a></li>
    <li><a href="#">Kontak</a></li>
  </ul>

  <button class="btn-cta">Daftar</button>
</nav>

</body>
</html>

Dokumentasi struktur:

📋 Dokumentasi Struktur
<nav class="navbar">Container utama, nanti jadi flex container
<div class="logo">Flex item pertama, posisi paling kiri
<ul class="nav-links">Flex item kedua, berisi daftar menu
<button class="btn-cta">Flex item ketiga, posisi paling kanan

Perhatikan beberapa hal penting di sini. Pertama, kita pakai <ul> dan <li> untuk daftar menu, bukan sekadar tumpukan <div>. Ini bukan kebetulan, secara semantik, menu navigasi memang sekumpulan link yang saling berkaitan, jadi wajar dibungkus dalam list. Selain lebih rapi secara struktur, ini juga membantu aksesibilitas, misalnya untuk pengguna pembaca layar (screen reader) yang mengandalkan struktur HTML untuk memahami konten halaman.

Kedua, jangan lupakan baris <meta name="viewport" content="width=device-width, initial-scale=1.0"> di bagian <head>. Baris ini sering banget dilupakan pemula, padahal perannya krusial. Tanpa baris ini, browser di HP akan merender halaman seolah-olah sedang menampilkan layar desktop, lalu di-zoom out otomatis supaya muat. Akibatnya, media query yang nanti kita buat di CSS jadi tidak berfungsi sama sekali, karena browser menganggap lebar layarnya tetap besar walaupun fisiknya kecil.

Langkah 2: Terapkan Flexbox di Container Utama

Sekarang masuk ke bagian intinya. Kita ubah elemen .navbar jadi flex container:

/* Reset dasar, biar nggak ada padding/margin bawaan browser yang bikin kaget */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box; /* padding & border dihitung dari DALAM lebar elemen */
}

.navbar {
  display: flex;              /* kunci utama: aktifkan mode flex container */
  justify-content: space-between; /* logo nempel kiri, cta nempel kanan */
  align-items: center;        /* semua elemen sejajar vertikal di tengah */
  padding: 16px 32px;
  background-color: #8e293b;
}

.logo {
  color: white;
  font-size: 20px;
  font-weight: bold;
}

Tiga baris di dalam .navbar inilah yang melakukan semua pekerjaan berat:

▸

display: flex mengubah navbar menjadi flex container. Begitu baris ini ditulis, semua anak langsungnya, yaitu .logo, .nav-links, dan .btn-cta, otomatis tersusun sejajar secara horizontal tanpa perlu kode tambahan apapun.

▸

justify-content: space-between mengatur jarak antar elemen di sepanjang sumbu utama (dalam hal ini horizontal), dengan elemen pertama menempel di sisi kiri dan elemen terakhir menempel di sisi kanan, sementara elemen di tengah-tengahnya diberi jarak yang merata secara otomatis.

▸

align-items: center menyejajarkan semua elemen secara vertikal di tengah, jadi nggak ada elemen yang posisinya naik-turun tidak rapi meskipun tingginya berbeda-beda, misalnya tombol dengan padding yang lebih besar dari teks link biasa.

Coba refresh browser kamu sekarang. Logo, menu, dan tombol harusnya sudah sejajar rapi dalam satu baris, dengan jarak yang proporsional, tanpa perlu itung-itungan lebar sama sekali. Inilah kekuatan utama Flexbox, kamu cukup mendeskripsikan hasil akhir yang diinginkan, dan browser yang menghitung detail teknisnya.

Langkah 3: Rapikan Menu Link-nya

List menu masih punya bullet point dan padding bawaan browser yang perlu dibersihkan dulu. Selain itu, karena <ul> secara default juga tersusun vertikal ke bawah (masing-masing <li> di baris terpisah), kita perlu menjadikannya flex container juga supaya link-linknya berjajar horizontal.

.nav-links {
  display: flex;       /* <ul> ikut dijadikan flex container juga */
  list-style: none;    /* hilangkan bullet point bawaan <li> */
  gap: 24px;            /* jarak antar menu, tanpa perlu margin manual */
}

.nav-links a {
  text-decoration: none;
  color: white;
  font-weight: 500;
  transition: color 0.2s ease; /* animasi halus saat hover */
}

.nav-links a:hover {
  color: #38bdf8;
}

Perhatikan properti gap: 24px di sini. Ini salah satu fitur paling enak dari Flexbox modern, dulu sebelum properti gap didukung luas, developer harus memberi margin-right satu per satu ke tiap item, dan biasanya item terakhir perlu dikecualikan supaya nggak ada margin berlebih di ujung. Sekarang, cukup satu baris gap untuk mengatur jarak semua elemen sekaligus secara konsisten.

Kita juga menambahkan sedikit sentuhan interaktif dengan :hover dan transition, supaya ketika pengunjung mengarahkan kursor ke salah satu menu, ada perubahan warna yang halus. Detail kecil seperti ini yang bikin sebuah navbar terasa lebih matang dan profesional, bukan cuma terlihat rapi secara struktur.

Langkah 4: Styling Tombol Call-to-Action

Tombol “Daftar” juga perlu sedikit polesan supaya nggak terlihat seperti tombol bawaan browser yang polos:

.btn-cta {
  background-color: #38bdf8;
  color: #1e293b;
  border: none;
  padding: 8px 20px;
  border-radius: 6px;
  font-weight: 600;
  cursor: pointer;
  transition: background-color 0.2s ease;
}

.btn-cta:hover {
  background-color: #0ea5e9;
}

Sampai tahap ini, navbar kamu di layar desktop harusnya sudah terlihat rapi: logo di kiri, menu di tengah dengan jarak konsisten, dan tombol aksi yang menonjol di kanan. Tapi ini baru setengah jalan, karena kita belum menyentuh bagian yang paling sering bikin developer pemula stres: membuatnya responsive di layar kecil.

Langkah 5: Bikin Responsive dengan Media Query

Ini bagian yang biasanya bikin orang stres, padahal sebenarnya cukup sederhana kalau fondasi Flexbox-nya sudah benar dari awal. Yang perlu kita lakukan cuma mengubah arah susunan flex dari horizontal menjadi vertikal ketika lebar layar mengecil, menggunakan media query.

/* Aktif otomatis kalau lebar layar 768px ke bawah (tablet & HP) */
@media (max-width: 768px) {
  .navbar {
    flex-direction: column;   /* dari baris → jadi tumpukan ke bawah */
    align-items: flex-start;  /* rata kiri, bukan center lagi */
    gap: 16px;
  }

  .nav-links {
    flex-direction: column;   /* menu juga ikut ditumpuk ke bawah */
    gap: 12px;
    width: 100%;
  }

  .btn-cta {
    width: 100%;               /* tombol memenuhi lebar layar */
  }
}

Dokumentasi breakpoint: angka 768px di sini menandai batas antara tampilan “mobile/tablet” dan “desktop”. Kamu bebas ubah angkanya, misalnya 640px kalau target utamanya HP saja, atau tambah breakpoint kedua (480px) kalau mau penyesuaian lebih detail lagi untuk HP layar kecil.

Perhatikan, kita cuma mengganti flex-direction dari row (nilai default) menjadi column. Itu saja perubahan intinya. Semua elemen yang tadinya berjajar horizontal, sekarang otomatis tersusun ke bawah secara vertikal, tanpa perlu mengatur ulang posisi masing-masing elemen secara manual satu per satu. Inilah kenapa memahami logika Flexbox jauh lebih penting daripada menghafal kodenya, karena begitu kamu paham, membuat versi responsive-nya jadi terasa hampir otomatis.

Sebelum :

Sesudah :

Coba resize browser kamu pelan-pelan dari lebar ke sempit, atau buka lewat DevTools dalam mode responsive (biasanya diakses lewat tombol ikon HP/tablet di pojok DevTools browser). Kamu akan melihat navbar berubah bentuk secara halus begitu lebar layarnya turun di bawah 768 piksel, dari tersusun horizontal menjadi tersusun vertikal ke bawah.

Angka 768px sendiri bukan angka sakral yang harus selalu dipakai. Itu cuma titik breakpoint yang umum dipakai untuk membedakan tampilan tablet ke bawah dengan desktop. Kamu bisa menyesuaikannya sesuai kebutuhan desain, misalnya 640px kalau targetnya lebih fokus ke HP saja.

Kesalahan yang Sering Bikin Navbar Berantakan

Setelah paham langkah-langkah di atas, ada beberapa kesalahan umum yang sering bikin navbar yang katanya sudah “responsive” tapi tetap berantakan begitu dibuka di HP asli:

Yang pertama, lupa memasang viewport meta tag seperti yang sudah disinggung sebelumnya. Ini kesalahan paling sering terjadi dan paling membingungkan, karena di komputer terlihat baik-baik saja, tapi begitu dibuka di HP sungguhan, seluruh media query seperti tidak berfungsi. Selalu cek dulu baris ini ada di <head> sebelum menuduh CSS-nya yang salah.

Yang kedua, menggunakan lebar fixed dalam satuan piksel untuk elemen di dalam navbar. Kalau logo atau tombolnya diberi width: 300px misalnya, dia tidak akan menyesuaikan ukurannya di layar yang lebih kecil dari itu, dan akan menyebabkan overflow horizontal yang bikin ada scroll ke samping yang tidak diinginkan. Lebih aman menggunakan max-width, satuan persen, atau membiarkan Flexbox yang mengatur ukurannya secara otomatis.

Yang ketiga, tidak melakukan testing di ukuran layar yang beragam. Menyempitkan window browser di laptop itu memang membantu, tapi beda dengan menguji di HP asli. Kadang ada elemen yang terlihat pas di simulasi DevTools, tapi ternyata sedikit kepotong atau overlap ketika dibuka di device sungguhan, karena perbedaan rendering antar browser dan perangkat.

Yang keempat, lupa mengatur box-sizing: border-box. Tanpa properti ini, padding dan border sebuah elemen akan ditambahkan ke lebar total elemen, bukan dihitung dari dalam. Ini bisa menyebabkan perhitungan lebar jadi meleset, terutama pada elemen seperti tombol yang punya padding besar.

Sedikit Sentuhan Ekstra: Hamburger Menu

Kalau kamu mau navbar-nya terasa lebih rapi dan modern lagi, biasanya di layar kecil menu .nav-links disembunyikan dulu, dan baru muncul ketika tombol hamburger (ikon tiga garis) diklik. Ini butuh sedikit JavaScript untuk toggle class, tapi fondasi CSS Flexbox yang sudah kita buat di atas tetap dipakai, cuma ditambah logika show/hide.

Contoh sederhananya seperti ini:

<!-- onclick toggle class 'active' di .nav-links tiap kali tombol diklik -->
<button class="hamburger" onclick="document.querySelector('.nav-links').classList.toggle('active')">
  ☰
</button>
.hamburger {
  display: none;   /* default: disembunyikan di layar desktop */
  background: none;
  border: none;
  font-size: 24px;
  color: white;
  cursor: pointer;
}

@media (max-width: 768px) {
  .hamburger {
    display: block;   /* tombol hamburger baru muncul di layar kecil */
  }

  .nav-links {
    display: none;         /* menu default tersembunyi di layar kecil */
    flex-direction: column;
  }

  .nav-links.active {
    display: flex;         /* muncul lagi begitu class 'active' ditambahkan JS */
  }
}

Dokumentasi alur hamburger menu: tombol diklik → JavaScript menambah/menghapus class active di .nav-links → CSS .nav-links.active mengubah display: none jadi display: flex → menu muncul/hilang. Tiga potongan kode ini saling terhubung lewat nama class active, jadi pastikan penulisannya konsisten di ketiganya.

Perhatikan bagaimana kita memanfaatkan display: none sebagai kondisi awal di layar kecil, lalu class .active yang ditambahkan lewat JavaScript mengubahnya kembali menjadi display: flex. Kombinasi ini yang membuat menu bisa disembunyikan dan dimunculkan sesuai interaksi pengguna, tanpa kehilangan struktur flex yang sudah dibangun sebelumnya. Ini bisa jadi topik latihan lanjutan setelah kamu benar-benar menguasai navbar dasar yang sudah dibuat di langkah-langkah sebelumnya.

Kenapa Pemahaman Ini Penting di Dunia Kerja

Mungkin terlihat sepele, cuma navbar. Tapi di dunia kerja nyata sebagai front-end developer, navbar adalah salah satu komponen yang paling sering dikerjakan ulang, direvisi, dan disesuaikan dengan berbagai breakpoint layar. Kalau fondasi pemahaman Flexbox-mu kuat, mengerjakan revisi semacam ini akan terasa cepat dan tidak bikin stres. Sebaliknya, kalau dasar Flexbox-nya lemah dan hanya mengandalkan hafalan dari framework, begitu ada requirement yang sedikit di luar kebiasaan, kamu akan kesulitan menyesuaikannya.

Selain itu, memahami Flexbox secara native juga membuatmu tidak terlalu bergantung pada framework CSS seperti Bootstrap atau Tailwind. Framework-framework itu sebenarnya di baliknya juga menggunakan Flexbox atau Grid, cuma dibungkus dalam class-class siap pakai. Kalau kamu paham konsep dasarnya, kamu akan lebih cepat beradaptasi dengan framework apapun, karena kamu mengerti apa yang sebenarnya terjadi di balik class-class tersebut, bukan sekadar menghafal nama class tanpa tahu efeknya.

Kesimpulan

Navbar responsive sebenarnya bukan soal menghafal banyak baris kode, tapi soal memahami logika sederhana di baliknya: susun elemen secara horizontal ketika layar besar, lalu ubah menjadi vertikal ketika layar mengecil. Flexbox cuma alat yang membuat logika sederhana itu bisa ditulis dengan sedikit baris kode, tanpa perlu perhitungan lebar yang rumit seperti pendekatan lama.

Kalau dirangkum, ada lima langkah utama yang sudah kita bahas: menyiapkan struktur HTML yang semantik, menjadikan navbar sebagai flex container, merapikan menu link dengan flex dan gap, mempercantik tombol aksi, dan terakhir menerapkan media query untuk mengubah arah susunan di layar kecil. Kelima langkah ini adalah pola yang bisa kamu pakai berulang-ulang untuk hampir semua kebutuhan navbar, apapun desainnya.

Coba sekarang, buka text editor kamu, dan praktikkan langkah-langkah di atas satu per satu, jangan cuma dibaca. Ubah warnanya sesuai selera, tambahkan logo pakai gambar, atau eksperimen dengan breakpoint yang berbeda dari 768px. Semakin sering kamu utak-atik sendiri dan melihat langsung efeknya di browser, semakin cepat kamu hafal pola-pola Flexbox secara natural, tanpa perlu bolak-balik membuka dokumentasi setiap kali menemukan kasus baru.

Penulis : Sandya Gifta Ulimaz Sofiamagaski

Tags: CSSCSS FlexboxCSS untuk PemulaFrontend DevelopmentHamburger MenuHTML CSSMedia QueryNavbar ResponsiveResponsive Designtutorial cssWeb Development
Previous Post
Next Post

Post comment

Cancel reply

Your email address will not be published. Required fields are marked *

Recent Posts

  • Cara Membuat GitHub Pages untuk Portofolio Data Analyst
  • Your Data, Your Rules: Mengapa Self-Hosted Cloud Storage Penting di 2026?
  • Cara Deploy Notebook ke GitHub dengan Dokumentasi Lengkap
  • Menentukan Perangkat Jaringan Bermasalah Menggunakan SQL
  • Navbar Berantakan di HP? Ini Rahasia Bikin Navbar Responsive Auto Rapi Pakai Flexbox

Arsip

  • September 2026
  • August 2026
  • July 2026
  • June 2026
  • April 2026
  • March 2026
  • February 2026
  • January 2026
  • September 2025
  • August 2025
  • July 2025
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
  • February 2018
  • January 2018
  • December 2017
  • November 2017
  • October 2017
  • September 2017
  • August 2017
  • July 2017
  • June 2017
  • May 2017
  • April 2017
  • March 2017
  • February 2017
  • January 2017
  • December 2016
  • November 2016
  • October 2016
  • September 2016
  • August 2016
  • July 2016
  • June 2016
  • May 2016
  • April 2016
  • March 2016
  • February 2016
  • January 2016
  • December 2015
  • November 2015
  • October 2015
  • September 2015
  • August 2015
  • July 2015
  • June 2015
  • May 2015
  • April 2015
  • March 2015
  • February 2015
  • January 2015
  • December 2014
  • November 2014
  • October 2014
  • September 2014
  • August 2014
  • July 2014
  • June 2014
  • May 2014
  • April 2014
  • March 2014
  • February 2014
  • January 2014
  • December 2013
  • November 2013
  • October 2013
  • September 2013
  • August 2013
  • July 2013
  • June 2013
  • May 2013
  • April 2013
  • March 2013
  • February 2013
  • January 2013
  • December 2012
  • November 2012
  • October 2012
  • September 2012
  • August 2012
  • July 2012
  • June 2012
  • May 2012
  • April 2012
  • December 2011
  • November 2011

Tags

apache web server dns server kursus android kursus database kursus dns dan web server kursus dns server kursus ethical hacking kursus hacking kursus jaringan kursus jaringan linux Kursus Komputer kursus komputer di solo kursus komputer di solo / surakarta kursus komputer di surakarta kursus linux Kursus Linux Forensics kursus linux networking kursus linux security kursus linux server kursus mikrotik kursus networking kursus network security kursus php Kursus PHP dan MySQL kursus php mysql kursus proxy kursus security kursus ubuntu kursus ubuntu server kursus web kursus web security kursus web server kursus wordpress kursus wordpress theme linux MySQL pelatihan komputer di solo PHP python security training komputer training komputer di solo tutorial php ubuntu wordpress

© Edusoft Center - Kursus Komputer di Solo | 2010 - 2026 | Privacy Policy | Site Map | Portfolio Magang | Butuh tim kami langsung yang mengerjakan? Lihat layanan implementasi →

All Right Reserved

WhatsApp us