KelasIT.com
Web Development

Membangun Website Responsive

Teknik membangun website responsif: viewport, pendekatan mobile-first, unit relatif, Flexbox dan Grid, media query, gambar responsif, tipografi fluid, target sentuh, aksesibilitas, dan cara mengujinya.

Membangun Website Responsive

Lebih dari separuh trafik web global datang dari ponsel. Website yang hanya nyaman di layar laptop kehilangan banyak pengunjung dan juga diberi peringkat lebih rendah oleh mesin pencari. Desain responsif membuat satu kode HTML/CSS beradaptasi dengan layar apa pun, dari ponsel kecil hingga monitor lebar.

Fondasi: tag viewport

Tanpa baris ini, browser ponsel menampilkan halaman seolah layar selebar ±980px lalu mengecilkannya:

<meta name="viewport" content="width=device-width, initial-scale=1">

Letakkan di <head> setiap halaman. Hindari user-scalable=no karena menghalangi pengguna memperbesar tampilan (masalah aksesibilitas).

Pendekatan mobile-first

Tulis CSS dasar untuk layar kecil, lalu tambahkan gaya untuk layar lebih besar dengan min-width.

/* Dasar: ponsel */
.container { padding: 16px; }
.kartu-grid { display: grid; gap: 16px; }

/* Tablet ke atas */
@media (min-width: 768px) {
    .kartu-grid { grid-template-columns: repeat(2, 1fr); }
}

/* Desktop */
@media (min-width: 1100px) {
    .container { max-width: 1100px; margin-inline: auto; }
    .kartu-grid { grid-template-columns: repeat(3, 1fr); }
}

Keuntungannya: perangkat lemah di jaringan lambat hanya memuat gaya yang dibutuhkan, dan CSS cenderung lebih sederhana karena tidak perlu "membatalkan" gaya desktop.

Tentukan breakpoint dari konten, bukan dari perangkat. Perkecil jendela browser; ketika tata letak mulai terlihat janggal, di situlah breakpoint dibuat. Titik yang umum dipakai: 480, 768, 1024, 1280px.

Unit relatif

UnitRelatif terhadapDipakai untuk
%Ukuran elemen indukLebar kolom
remUkuran font akar (biasanya 16px)Font, jarak, ukuran komponen
emUkuran font elemen ituPadding yang ikut ukuran teks
vw / vhLebar / tinggi viewportElemen layar penuh
chLebar karakter "0"Lebar baris teks (max-width: 65ch)

Hindari px untuk ukuran teks; rem menghormati pengaturan ukuran font pengguna.

Flexbox dan Grid

Flexbox untuk tata letak satu dimensi (baris atau kolom): navigasi, deretan tombol, kartu sejajar.

.nav { display: flex; flex-wrap: wrap; gap: 12px; justify-content: space-between; }

CSS Grid untuk dua dimensi. Satu baris ajaib untuk galeri responsif tanpa media query:

.galeri {
    display: grid;
    gap: 16px;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}

Artinya: buat kolom sebanyak yang muat, minimal 240px, dan bagi sisa ruang rata.

Gambar yang responsif

Pastikan gambar tidak keluar dari wadahnya:

img { max-width: 100%; height: auto; display: block; }

Kirim ukuran yang sesuai agar ponsel tidak mengunduh gambar 3MB:

<img src="foto-800.jpg"
     srcset="foto-400.jpg 400w, foto-800.jpg 800w, foto-1600.jpg 1600w"
     sizes="(min-width: 768px) 50vw, 100vw"
     alt="Peserta workshop sedang belajar"
     loading="lazy" width="800" height="533">
  • srcset + sizes: browser memilih berkas terbaik.
  • loading="lazy": gambar di bawah layar dimuat belakangan.
  • width dan height: mencegah halaman melompat saat gambar tampil (layout shift).
  • Pertimbangkan format modern WebP/AVIF dan elemen <picture> untuk art direction.
  • Gunakan object-fit: cover untuk menjaga rasio gambar di dalam kotak.

Tipografi yang luwes

clamp(min, ideal, max) membuat ukuran font tumbuh mulus mengikuti layar:

h1 { font-size: clamp(1.75rem, 4vw + 1rem, 3rem); }
body { font-size: 1rem; line-height: 1.6; }
.artikel { max-width: 65ch; }      /* baris ideal 45-75 karakter */

Navigasi di layar kecil

Menu horizontal yang panjang tidak muat di ponsel. Pola umum: menu "hamburger" yang membuka panel. Pastikan:

  • tombol memiliki label aksesibel (aria-label="Buka menu") dan status aria-expanded;
  • bisa dioperasikan dengan keyboard;
  • menu tertutup ketika tautan dipilih.

Target sentuh dan interaksi

  • Ukuran minimal area sentuh ±44×44 px, dengan jarak antar-tombol yang cukup.
  • Jangan mengandalkan :hover untuk fungsi penting, karena layar sentuh tidak punya hover.
  • Form: gunakan type input yang tepat (email, tel, number) agar keyboard ponsel menyesuaikan, dan beri autocomplete yang benar.
  • Ukuran font input minimal 16px agar iOS tidak otomatis memperbesar halaman saat fokus.

Tabel dan konten lebar

Bungkus tabel lebar agar bisa digulir horizontal, alih-alih merusak tata letak halaman:

.tabel-wrap { overflow-x: auto; }

Untuk teks panjang tanpa spasi (URL), tambahkan overflow-wrap: anywhere;.

Preferensi pengguna

@media (prefers-color-scheme: dark) { /* tema gelap */ }
@media (prefers-reduced-motion: reduce) { * { animation: none !important; } }

Menghormati preferensi ini meningkatkan kenyamanan dan aksesibilitas.

Performa adalah bagian dari responsif

Ponsel di jaringan seluler butuh halaman ringan:

  • Kompres dan ubah ukuran gambar.
  • Minify CSS/JS, dan muat JS non-kritis dengan defer.
  • Batasi font web (cukup 1-2 keluarga, gunakan font-display: swap).
  • Targetkan Core Web Vitals yang baik: LCP < 2,5 detik, CLS < 0,1, INP < 200 ms.

Cara menguji

  1. DevTools → Device Toolbar (Ctrl/Cmd+Shift+M): simulasi berbagai ukuran layar dan throttling jaringan.
  2. Ubah ukuran jendela perlahan dan cari titik rusak.
  3. Uji di perangkat sungguhan, minimal satu Android dan satu iPhone jika memungkinkan.
  4. Lighthouse (di DevTools) untuk skor performa, aksesibilitas, dan SEO.
  5. Uji orientasi portrait dan landscape, serta zoom teks 200%.

Kesalahan yang sering terjadi

KesalahanPerbaikan
Lupa meta viewportTambahkan di <head>
Lebar tetap dalam px pada kontainerGunakan max-width dan persentase
Gambar meluapmax-width: 100%; height: auto
Teks terlalu kecil di ponselBasis 16px, gunakan rem
Tombol terlalu kecil/rapatMinimal 44px
Menyembunyikan konten penting di mobilePrioritaskan, jangan buang
Hanya menguji di emulatorCoba perangkat asli

Kesimpulan

Website responsif dibangun dari beberapa kebiasaan sederhana: meta viewport, mobile-first, unit relatif, Flexbox/Grid, gambar yang adaptif, target sentuh yang nyaman, dan pengujian di perangkat nyata. Terapkan sejak awal proyek; mengubah desain desktop menjadi responsif belakangan jauh lebih sulit.

A
Admin KelasIT

Menulis tentang pemrograman, database, AI, dan karier di dunia IT supaya belajar terasa lebih mudah dan menyenangkan.

Komentar (0)

Komentar hanya untuk member. Masuk atau daftar gratis untuk ikut berdiskusi.

Mau belajar lebih dalam?

Course online dengan latihan coding interaktif dan sertifikat.

Lihat Course →

Gabung komunitas

Tanya jawab, info event, dan teman belajar di grup WhatsApp.

Gabung Grup