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 query | Container query | |
|---|---|---|
| Neye bakar? | Viewport / cihaz | En yakın container ataya |
| Kullanım | Sayfa layout'u | Bileşen içi layout |
| Yeniden kullanılabilirlik | Bileşen nerede olduğunu bilmez | Bileşen kendi alanına uyum sağlar |
Dikkat edilecekler
container-type: inline-sizeolan 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-motiongibi kullanıcı tercihleri için gereklidir.
İlgili HTML & CSS soruları
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.