Picture & Responsive Images — HTML

Bayangin user kamu pake HP 4G di kampung dengan kuota terbatas, buka website yang loading gambar 5MB hi-res yang aslinya buat layar 4K. Kuota habis, halaman…

Gambar responsif artinya browser mengunduh versi gambar yang pas dengan layar pengunjung: file kecil buat HP, file besar buat laptop. Pengunjung HP gak buang kuota buat gambar raksasa, dan pengunjung laptop tetap dapat gambar yang tajam. HTML punya dua cara buat ini: tag <picture> dan atribut srcset.

🧪 Tebakan cepat: ada tiga versi gambar di kode. Browser di HP mengunduh ketiganya lalu memilih, atau cuma satu? Tebak dulu, jawabannya ada di bagian "Gambar beda buat layar beda".

<picture>: gambar beda buat layar beda

<picture>
  <source media="(min-width: 1024px)" srcset="besar.jpg">
  <source media="(min-width: 600px)" srcset="sedang.jpg">
  <img src="kecil.jpg" alt="Pantai saat matahari terbenam">
</picture>

Bagian per bagian:

Hasilnya: laptop 1280px dapat besar.jpg, tablet 768px dapat sedang.jpg, HP 360px dapat kecil.jpg. Browser cuma mengunduh satu file, bukan ketiganya. Tiap versi boleh beda potongan, misalnya foto melebar di laptop dan foto tegak di HP. Di <picture>, kamu yang menentukan gambar mana buat layar mana.

srcset dan sizes: satu gambar, beberapa ukuran file

<img src="besar.jpg" alt="Foto"
     srcset="kecil.jpg 480w, besar.jpg 1024w"
     sizes="(max-width: 600px) 480px, 1024px">

Bedanya dengan <picture>: di sini gambarnya sama, cuma ukuran filenya beda, dan browser sendiri yang memilih file mana yang cukup.

⚠️ Jebakan yang sering ketemu

TL;DR: <picture> berisi beberapa <source media="..." srcset="..."> dan satu <img> cadangan di paling bawah. Browser memakai <source> pertama yang cocok, kalau gak ada yang cocok dia pakai <img>. Buat gambar yang sama dengan beberapa ukuran file, cukup <img> dengan srcset (file dan lebarnya, pakai w) dan sizes (lebar tampilnya). src dan alt selalu ditulis di <img>.

Yang akan kamu pelajari