CSS Pulsuz, qeydiyyatsız

CSS Container Queries (@container) generatoru

Klassik @media sorğuları komponentin yerləşdiyi yeri deyil, yalnız bütün brauzer ekranını görür. Komponent dar yan paneldə (sidebar) olanda da böyük ekran rejimində açılır və xaos yaranır. container-type: inline-size və @container ilə komponent harada yerləşməsindən asılı olmayaraq özünə ayrılan sahəyə mükəmməl uyğunlaşır.

Nəticə
Hazır CSS kodu
/* 1. Valideyn konteyneri elan edirik */
.card-wrapper {
  container-type: inline-size;
  container-name: card;
}

/* 2. Kart öz konteynerinin eninə uyğunlaşır */
.card {
  display: flex;
  flex-direction: column;
}

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

Necə istifadə etmək olar

  1. Konteynerin sağ kənarındakı tutacağı sürüşdürün (və ya en sürüşdürücüsünü dəyişin) və kartın necə avtomatik formalaşdığını izləyin.
  2. Hazır ssenariləri seçin: «Dar yan panel» (260px), «Orta lent» (420px), yaxud «Geniş bölmə» (580px).
  3. Konteynerin ölçüsü 400px və 520px hədlərini keçdikdə @container qaydalarının necə aktivləşdiyini müşahidə edin.
  4. Hazır təmiz və müasir @container CSS kodunu kopyalayın.

Bu necə işləyir

Container Queries niyə inqilabdır?

Onilliklər ərzində veb-tərtibatçılar @media (min-width: 768px) yazırdılar. Lakin müasir veb-saytlar təkrar istifadə olunan komponentlərdən (kartlar, vidjetlər) ibarətdir. Eyni kart həm 1920px ekranda dar sol paneldə (300px), həm də ana lentdə ola bilər. @container komponenti bütün ekrandan asılılıqdan azad edir.

container-type: inline-size nə deməkdir?

container-type: inline-size brauzerə bildirir ki, bu elementin daxilindəki uşaqlar onun üfüqi enini (inline oxu) sorğulaya bilərlər. Bu zaman daxildəki elementlər @container (min-width: 400px) qaydasını tətbiq edir.

.widget-wrap {
  container-type: inline-size;
  container-name: widget;
}

@container widget (min-width: 400px) {
  .widget-content { display: grid; grid-template-columns: 120px 1fr; }
}

cqi, cqw, cqmin vahidləri

Container Queries həmçinin xüsusi ölçü vahidləri təqdim edir: 1cqw = konteyner eninin 1%-i, 1cqi = konteynerin daxili ox ölçüsünün 1%-i. Bu vahidlərlə şriftləri və boşluqları birbaşa blokun eninə mütənasib şəkildə böyüdüb-kiçiltmək mümkündür.

Tez-tez verilən suallar

Bütün müasir brauzerlər Container Queries dəstəkləyirmi?

Bəli, Container Queries 2023-cü ilin əvvəlindən (Chrome 105+, Safari 16+, Firefox 110+, Edge 105+) bütün brauzerlərdə tam dəstəklənir (92%+ qlobal dəstək).

container-type olmadan @container işləyərmi?

Xeyr, mütləq valideyn elementə container-type: inline-size (və ya size) verilməlidir. Əks halda brauzer hansı konteynerin enini ölçəcəyini bilməyəcək.

Niyə container-type: size yerinə adətən inline-size istifadə olunur?

size həm eni, həm hündürlüyü tələb edir və çox vaxt sonsuz dövrə (layout loop) səbəb olur. inline-size yalnız eni ölçür və təhlükəsiz şəkildə şaquli məzmunun sərbəst böyüməsinə imkan verir.

HTML və CSS kursunda bu mövzu

Digər CSS alətləri

CSS gradient generatoru Linear, radial və conic gradient: rəngləri, bucağı və nöqtələri seçin, hazır kodu kopyalayın. Flexbox generatoru və playground Konteyner və elementlərin flex xassələrini sınayın: istiqamət, düzləmə, boşluq və hazır CSS. CSS Grid generatoru Sütun və sətir ölçülərini seçin, boşluğu və düzləməni tənzimləyin, hazır grid kodunu kopyalayın. CSS box-shadow generatoru Kölgənin yerini, bulanıqlığını, rəngini və laylarını seçin, hazır box-shadow kodunu kopyalayın. Cubic-bezier generatoru Easing əyrisinin nöqtələrini sürüşdürün və hazır CSS transition kodunu kopyalayın. SVG animasiya generatoru Forma və effekt seçin — səhifəyə yapışdırmaq üçün hazır SVG və CSS keyframes alın. CSS specificity kalkulyatoru Seçiciləri yazın — (a,b,c) ağırlığını, rəngli təhlilini və hansı qaydanın qalib gəldiyini görün. CSS box model vizualizatoru Content, padding, border və margin-i DevTools tipli sxemdə görün və hazır CSS kodunu alın. CSS transform generatoru Elementi sürüşdürün, fırladın, böyüdün və əyin: ilkin mövqe önizləmədə görünür, kod hazırdır. CSS clamp() kalkulyatoru Min və maks şrift ölçüsünü və ekran enini yazın — axıcı tipoqrafika üçün hazır clamp() alın. Rəng kontrastı yoxlayıcısı (WCAG) Mətn və fon rənginin kontrastını WCAG AA və AAA üzrə yoxlayın, uyğun gəlməyən cütü düzəldin. CSS clip-path generatoru Poliqon, dairə, ellips və kəsilmiş künclər: nöqtələri sürüşdürün və hazır CSS kodunu kopyalayın. CSS Glassmorphism generatoru Mat şüşə effekti: backdrop-filter blur, şəffaflıq, kənar işığı və hazır CSS kodu. CSS border-radius (Blob) generatoru Üzvi formalar və 8 dəyərli border-radius: radiusları sürüşdürün, canlı blob animasiyasını yoxlayın. CSS Stacking Context və z-index vizualizatoru z-index: 9999 niyə işləmir? 3D laylar görünüşü ilə CSS Stacking Context mexanizmini və səbəblərini vizual öyrənin. CSS aspect-ratio və object-fit generatoru Şəkillərin deformasiyasına və CLS sıçrayışlarına son: aspect-ratio proporsiyaları və object-fit fokus nöqtəsi canlı. CSS Filtr Studiyası və generatoru Qrafik redaktorsuz foto effektləri: blur, contrast, hue-rotate, sepia və Instagram üslublu hazır presətlər. OKLCH rəng generatoru və palitrası Göz üçün bərabər parlaqlıq və Display P3 canlı rənglər: OKLCH konvertasiyası, qradasiya və harmonik palitralar. CSS Scroll-driven Animations generatoru JavaScript olmadan skroll animasiyaları: animation-timeline scroll() və view() ilə oxuma lenti və kartların açılması.
WhatsApp