K

Command Palette

Search for a command to run...

Daftar

Desain Responsif & Media Queries

Pastikan websitemu tampil sempurna di semua perangkat! Pelajari konsep Desain Web Responsif (RWD) dan cara menggunakan Media Queries CSS untuk mengatur style berdasarkan ukuran layar, termasuk pengenalan dark/light mode.

Di sini kita akan belajar cara bikin website yang tampilannya bisa "nurut" sama ukuran layar pengunjung, entah itu di desktop, tablet, atau HP, termasuk pengenalan singkat ke dark/light mode.

Website Keren di Semua Layar: Jurus Desain Responsif & Media Queries CSS!

Pernah buka website di HP terus tulisannya jadi kecil banget sampe harus di-zoom, atau layout-nya jadi berantakan? Gak enak banget kan? Nah, di zaman sekarang di mana orang ngakses internet dari macem-macem perangkat (desktop, laptop, tablet, HP dengan berbagai ukuran layar), penting banget buat website kita bisa tampil bagus dan gampang dipake di semua kondisi itu.

Inilah inti dari Desain Web Responsif (Responsive Web Design - RWD). Tujuannya adalah bikin satu website yang "cerdas", yang bisa otomatis nyesuaiin tampilan dan layout-nya biar optimal di perangkat apa pun yang dipake pengunjung. Dan senjata utama kita buat ngelakuin ini di CSS adalah Media Queries.

Apa Itu Desain Web Responsif (RWD)?

RWD bukan cuma soal bikin website jadi lebih kecil di HP. Ini adalah pendekatan desain dan pengembangan yang bertujuan ngasih pengalaman pengguna (UX) terbaik di berbagai resolusi layar dan orientasi.

Beberapa pilar utama RWD:

  1. Fluid Grids (Kisi-kisi Fleksibel):

    • Menggunakan unit relatif kayak persentase (%) atau unit fr di Grid/Flexbox buat lebar kolom dan layout, bukan ukuran pixel tetap. Jadi, layout bisa "melar" atau "menciut" ngikutin lebar layar.
  2. Flexible Images and Media (Gambar dan Media Fleksibel):

    • Memastikan gambar dan media lain (kayak video) juga bisa nyesuaiin ukurannya biar gak "jebol" dari kontainernya di layar kecil.
    • Teknik umum: img, video { max-width: 100%; height: auto; }. Ini bikin gambar/video gak bakal lebih lebar dari parent-nya, dan tingginya nyesuaiin biar rasio aspeknya terjaga.
  3. Media Queries:

    • Ini "jantung" dari RWD di CSS. Media Queries ngebolehin kita buat nerapin blok style CSS yang berbeda-beda hanya jika kondisi tertentu terpenuhi, misalnya kalau lebar layar ada di rentang tertentu.

Jangan Lupa Meta Tag Viewport! (Review dari HTML)

Sebelum kita ngomongin Media Queries, ada satu hal super penting yang harus ada di <head> file HTML-mu biar RWD bisa jalan bener di perangkat mobile: meta tag viewport.

html
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- Meta tag lain, title, link CSS, dll. -->
</head>
  • width=device-width: Ngasih tau browser buat ngeset lebar viewport sama dengan lebar layar perangkat.
  • initial-scale=1.0: Ngeset tingkat zoom awal jadi 100% (gak di-zoom). Tanpa ini, browser mobile biasanya bakal nampilin halaman web seolah-olah lagi di desktop (dengan lebar viewport yang gede, misal 980px), terus di-zoom out biar muat. Hasilnya, teks jadi kecil banget. Jadi, meta viewport ini WAJIB ada!

Media Queries: CSS yang Bisa "Ngerasain" Kondisi Layar

Media Queries adalah fitur CSS yang ngebolehin kamu buat nerapin style secara kondisional. Aturan CSS di dalem media query cuma bakal aktif kalau kondisi yang ditentuin itu true.

  • Sintaks Dasar Media Query:

    css
    @media media-type and (media-feature: value) {
        /* Aturan CSS yang mau diterapin kalau kondisinya terpenuhi */
        selector {
            properti: nilai;
        }
    }
    • @media: Keyword buat memulai media query.
    • media-type (Opsional): Jenis media target. Nilai umum:
      • all (default kalau gak disebut): Berlaku buat semua jenis media.
      • screen: Buat layar komputer, tablet, HP. Ini yang paling sering kita pake buat RWD.
      • print: Buat versi cetak halaman.
      • speech: Buat screen reader.
    • and: Keyword buat nggabungin beberapa kondisi (bisa juga pake not atau only).
    • (media-feature: value): Ini adalah kondisi yang harus dipenuhi. Ada banyak media feature, tapi yang paling sering dipake buat RWD adalah yang berhubungan sama lebar viewport:
      • min-width: nilai: Kondisi terpenuhi kalau lebar viewport minimal nilai tersebut (misal, min-width: 768px artinya buat layar yang lebarnya 768px atau lebih gede).
      • max-width: nilai: Kondisi terpenuhi kalau lebar viewport maksimal nilai tersebut (misal, max-width: 600px artinya buat layar yang lebarnya 600px atau lebih kecil).
      • width: nilai: Kondisi terpenuhi kalau lebar viewport persis nilai tersebut (jarang dipake sendirian).
      • Fitur lain: min-height, max-height, orientation: portrait | landscape, aspect-ratio, prefers-color-scheme (buat dark/light mode!).
  • Breakpoint Umum:

    • Breakpoint adalah titik-titik lebar viewport di mana kamu mutusin buat ngubah layout atau style. Gak ada angka pasti yang "bener", tergantung desainmu. Tapi, beberapa breakpoint yang umum dipake sebagai patokan (bisa beda-beda):
      • Layar HP kecil: sekitar 320px - 480px
      • Layar HP besar / Tablet portrait: sekitar 481px - 768px
      • Tablet landscape / Laptop kecil: sekitar 769px - 1024px
      • Desktop: 1025px ke atas.

Contoh Penggunaan Media Query:

Misalnya, kita punya layout 2 kolom (sidebar dan konten utama) buat desktop, tapi di layar kecil kita mau sidebar-nya jadi di atas konten utama (satu kolom).

HTML:

html
<div class="container">
    <aside class="sidebar">Sidebar</aside>
    <main class="konten-utama">Konten Utama</main>
</div>

CSS (Pendekatan Desktop-First):

css
/* Style default (buat desktop atau layar lebar) */
.container {
    display: flex; /* Pake flexbox buat layout 2 kolom */
}
.sidebar {
    width: 200px; /* Lebar sidebar tetap */
    background-color: lightgray;
    padding: 15px;
}
.konten-utama {
    flex-grow: 1; /* Konten utama ngisi sisa ruang */
    background-color: lightblue;
    padding: 15px;
}
 
/* Media Query buat layar yang lebarnya 768px atau lebih kecil */
@media screen and (max-width: 768px) {
    .container {
        flex-direction: column; /* Ubah arah flex jadi kolom (numpuk vertikal) */
    }
    .sidebar {
        width: 100%; /* Sidebar jadi lebar penuh */
        order: -1; /* (Opsional) Pindahin sidebar ke atas konten utama secara visual */
    }
    /* Gak perlu ngubah .konten-utama karena udah otomatis ngikutin */
}

Pendekatan Mobile-First vs. Desktop-First:

  • Mobile-First: Kamu desain style default-nya buat layar HP dulu (yang paling simpel), terus pake media query dengan min-width buat nambahin style atau ngubah layout buat layar yang lebih gede. Ini pendekatan yang sering direkomendasikan karena ngedorong kita buat mikirin konten esensial dulu dan performa di mobile.
  • Desktop-First: Kebalikannya, kamu desain buat desktop dulu, terus pake media query dengan max-width buat nyesuaiin ke layar yang lebih kecil.

Contoh di atas itu pake Desktop-First. Kalau Mobile-First, kurang lebih jadi gini:

css
/* Style default (buat mobile atau layar kecil) */
.container {
    display: flex;
    flex-direction: column; /* Defaultnya udah satu kolom */
}
.sidebar {
    width: 100%;
    background-color: lightgray;
    padding: 15px;
    /* order: -1; kalau mau tetap di atas di mobile */
}
.konten-utama {
    /* flex-grow: 1; gak terlalu relevan di sini kalau udah column */
    background-color: lightblue;
    padding: 15px;
}
 
/* Media Query buat layar yang lebarnya 769px atau lebih besar */
@media screen and (min-width: 769px) {
    .container {
        flex-direction: row; /* Ubah jadi baris buat layar gede */
    }
    .sidebar {
        width: 200px; /* Kasih lebar tetap buat sidebar */
        /* order: 0; (kembali ke normal atau gak perlu diset) */
    }
    .konten-utama {
        flex-grow: 1; /* Konten utama ngisi sisa ruang */
    }
}

Pengenalan Dark/Light Mode dengan Media Query prefers-color-scheme

Salah satu media feature yang lagi ngetren adalah prefers-color-scheme. Ini ngebolehin kamu buat ngasih style yang beda tergantung preferensi tema gelap (dark mode) atau terang (light mode) yang diset sama pengguna di sistem operasinya.

  • Nilai:
    • light: Pengguna milih tema terang.
    • dark: Pengguna milih tema gelap.
    • no-preference: Pengguna gak nyet preferensi (atau browser gak support).

Contoh Sederhana Dark Mode:

css
/* Style default (anggap light mode) */
body {
    background-color: white;
    color: black;
}
 
a {
    color: blue;
}
 
/* Style buat dark mode */
@media (prefers-color-scheme: dark) {
    body {
        background-color: #121212; /* Background gelap */
        color: #e0e0e0;         /* Teks terang */
    }
 
    a {
        color: lightblue; /* Warna link yang kontras di dark mode */
    }
 
    .kartu { /* Contoh, kartu jadi beda di dark mode */
        background-color: #1e1e1e;
        border-color: #444;
    }
}

Dengan ini, kalau pengguna nyalain dark mode di OS-nya, website-mu bisa otomatis ikut ganti tema jadi gelap. Keren kan? (Implementasi dark mode yang beneran biasanya lebih kompleks, ngatur semua warna elemen, tapi ini dasar konsepnya).


Desain Web Responsif dan Media Queries itu skill wajib buat web developer modern. Dengan nguasain ini, kamu bisa mastiin website-mu gak cuma keren di satu ukuran layar aja, tapi juga nyaman dan fungsional buat semua pengunjung, apapun perangkat yang mereka pake.

Ingat, selalu tes tampilan websitemu di berbagai ukuran layar pas lagi development. Browser DevTools punya fitur buat nyimulasiin berbagai ukuran perangkat mobile, itu berguna banget!


Kuis Desain Responsif & Media Queries CSS

Pertanyaan 1 dari 5

Apa tujuan utama dari Desain Web Responsif (Responsive Web Design - RWD)?