Container Queries — CSS

Coba bayangin satu kartu produk yang dipake di banyak tempat: di sidebar (sempit), di grid main content (sedang), di hero section (lebar). Pengen kartunya adapt

Coba bayangin satu kartu produk yang dipake di banyak tempat: di sidebar (sempit), di grid main content (sedang), di hero section (lebar). Pengen kartunya adapt sesuai ruang yang ada — bukan sesuai ukuran layar global. Media query gak bisa solve ini, dia cuma tau lebar viewport. Solusinya: Container Queries — fitur CSS modern yang ngecek ukuran PARENT terdekat, bukan layar. Komponen jadi truly reusable, adapt sendiri ke konteks tempat dia dipasang.

🤔 Wishlist 10 tahun. Frontend developer minta fitur ini SEJAK 2015. Akhirnya keluar di Chrome 105 (Sep 2022) dan udah cross-browser stabil di 2024. Salah satu fitur CSS yang paling lama dinanti — sekarang udah aman dipake.

1. Tentukan container:

.card-wrapper {
  container-type: inline-size;
  container-name: card;
}

2. Tulis query berdasarkan container:

@container card (min-width: 400px) {
  .card { flex-direction: row; }
}

@container card (max-width: 399px) {
  .card { flex-direction: column; }
}

Container type:

Perbedaan dengan Media Queries:

🎭 Analogi sehari-hari

Bayangin meja lipat di rumah. Pas dipake di ruang tamu yang luas, bisa dibuka penuh buat 6 orang. Pas dipindah ke pojokan dapur sempit, otomatis jadi mode meja kecil 2 orang. Mejanya cerdas — adapt ke ruang yang ditempatin, bukan ke ukuran rumah keseluruhan. Container query gitu juga: kartu yang sama, kalau dipasang di sidebar sempit jadi layout vertikal, kalau dipasang di main content lega jadi horizontal. Beda sama media query yang cuma ngintip ukuran layar global, container query ngintip kotak parent terdekat.

⚠️ Jebakan yang sering ditemui

TL;DR: Container Queries = adapt komponen ke ukuran PARENT, bukan viewport. Bikin komponen truly reusable. Setup: container-type: inline-size di parent, lalu @container (min-width: 400px) { ... }. Beda dari media query yang cek seluruh layar. Bonus: cqw/cqi units untuk dimensi container. Browser support modern (2023+) udah aman.

Yang akan kamu pelajari