CSS container queries nedir? Media query'den farkı nedir?

Cevap

Container query'ler bir elemanı viewport'un değil, içinde bulunduğu kapsayıcının boyutuna göre stillendirmeyi sağlar. Böylece aynı kart bileşeni geniş ana içerikte yatay, dar sidebar'da dikey görünebilir; bileşen gerçekten yeniden kullanılabilir olur. 2023'ten beri tüm modern tarayıcılarda desteklenir.

.card-wrapper {
  container-type: inline-size;  /* genişliğe göre sorgulanabilir */
  container-name: card;
}

.card { display: grid; gap: 1rem; }

@container card (min-width: 400px) {
  .card { grid-template-columns: 150px 1fr; }
}

/* Kapsayıcıya göre birimler: cqi = kapsayıcı inline genişliğinin %1'i */
.card h2 { font-size: clamp(1rem, 4cqi, 1.5rem); }
Media queryContainer query
Neye bakar?Viewport / cihazEn yakın container ataya
KullanımSayfa layout'uBileşen içi layout
Yeniden kullanılabilirlikBileşen nerede olduğunu bilmezBileşen kendi alanına uyum sağlar

Dikkat edilecekler

  • container-type: inline-size olan eleman, içeriğinden genişlik alamaz (size containment); genelde zaten genişliği parent'tan gelen bir wrapper'a uygulanır.
  • Eleman kendisini sorgulayamaz; sorgu her zaman bir ata kapsayıcıya yapılır.
  • Style query'ler (@container style(--theme: dark)) custom property değerine göre stil verir; destek henüz daha sınırlıdır.
  • Media query'ler hâlâ sayfa genel layout'u, prefers-color-scheme, prefers-reduced-motion gibi kullanıcı tercihleri için gereklidir.
  1. Semantik HTML nedir, neden önemlidir?KolayHTML & CSSFrontend
  2. CSS box model nedir? box-sizing: border-box ne işe yarar?KolayHTML & CSSFrontend
  3. position değerleri nelerdir?KolayHTML & CSSFrontend
  4. Flexbox ile Grid arasındaki fark nedir? Hangisini ne zaman seçersiniz?OrtaHTML & CSSFrontend
  5. CSS specificity nasıl hesaplanır?OrtaHTML & CSSFrontend
  6. Pseudo-class ile pseudo-element arasındaki fark nedir?OrtaHTML & CSSFrontend

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle