CSS Pulsuz, qeydiyyatsız

CSS Stacking Context və z-index vizualizatoru

Dəfələrlə z-index: 99999 yazmısınız, lakin element yenə də qonşu blokun altında qalır? Səbəb — yeni «Stacking Context» (qatlaşma konteksti) yaranmasıdır. 3D izometrik baxışla layların hansı səviyyədə yerləşdiyini canlı görün.

Nəticə
Hazır CSS kodu
/* Valideyn yeni Stacking Context yaradır */
.card-a {
  position: relative;
  z-index: 1;
  isolation: isolate; /* və ya opacity: 0.99, transform */
}

/* Bu element digər kontekstləri aşa bilmir */
.child-modal {
  position: absolute;
  z-index: 9999; /* Valideynin z-index: 1 səviyyəsində ilişib qalır */
}

Necə istifadə etmək olar

  1. Hazır ssenarilərdən birini seçin: «Tələyə düşmüş Modal», «Dropdown qonşu blokun arxasında», yaxud «isolation: isolate ilə təmiz həll».
  2. 3D izometrik görünüşü (3D Layers) yandıraraq elementlərin hündürlük fərqini fəzada fırladıb izləyin.
  3. Valideyn blokun «Trigger» parametrlərini (opacity < 1, transform, filter, isolation) yandırıb-söndürün və uşaq elementin necə bloklandığını müşahidə edin.
  4. İzahat qutusunda hansı CSS xüsusiyyətinin yeni kontekst yaratdığını oxuyun və düzgün arxitekturanı CSS kodu kimi kopyalayın.

Bu necə işləyir

Stacking Context nədir?

Stacking Context — veb-səhifədə elementlərin istifadəçiyə doğru Z oxu üzrə necə üst-üstə düzülməsini təyin edən 3D qatlaşma sahəsidir. Yeni kontekst yarandıqda onun daxilindəki bütün uşaq elementlər həmin kontekstin «dustaqı» olur: uşağın z-index-i milyard olsa belə, o, valideyn kontekstindən yuxarı qalxa bilmir.

Kontekst yaradan əsas CSS xassələri

Təkcə z-index deyil, aşağıdakı müasir xassələr də avtomatik yeni stacking context formalaşdırır: opacity < 1, transform != none, filter != none, clip-path, mix-blend-mode, contain: paint/layout və isolation: isolate.

/* Valideyndə cəmi 1% şəffaflıq və ya 0px blur varsa, yeni kontekst yaranır! */
.parent {
  opacity: 0.99; /* Yeni Stacking Context! */
}

isolation: isolate — Z-index xaosunun müasir çarəsi

Əvvəllər təsadüfi kontekst yaratmamaq üçün çətinlik çəkirdik, lakin bəzən məhz elementin daxilindəki layları qapalı qutu etmək lazımdır. isolation: isolate xassəsi heç bir yan təsir (şəffaflıq və ya hərəkət) olmadan lokal qatlaşma qutusu yaradır və z-index sızmasının qarşısını alır.

.widget {
  isolation: isolate; /* Daxili z-index-lər çölə qarışmır */
}

Tez-tez verilən suallar

z-index niyə elementdə təsir etmir?

Elementin position xassəsi standart static olduqda z-index işləmir (Flex və Grid uşaqları istisna olmaqla). Elementə position: relative, absolute və ya fixed vermək lazımdır.

Niyə Modal və ya Dropdown menyu həmişə body sonuna yerləşdirilir?

React Portals və oxşar mexanizmlərin əsas məqsədi Modalı və ya Dropdown-u dərin komponentlərin Stacking Context tələsindən xilas edib birbaşa <body> kökündə açmaqdır.

Stacking Context-i necə yoxlamaq olar?

Brauzerlərin (Chrome DevTools) «Layers» panelində bütün 3D kompozisiya qatlarını əyani şəkildə fırladıb yoxlamaq olar.

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 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ı. CSS Container Queries (@container) generatoru Media sorğularına son: komponent ekran ölçüsünə deyil, öz konteynerinin eninə uyğunlaşır. Canlı ölçü dəyişmə və @container qaydaları.
WhatsApp