CSS de la A la Z: proprietate z-index. Un alt blog independent
Pătratul roz are o valoare z-index, alta decât auto, ceea ce creează un nou context de suprapunere. Apariția unui context de suprapunere afectează modul în care elemente copil.
Puteți schimba ordinea de stivuire a copiilor pătratului roz. Cu toate acestea, lor z-index are sens doar în contextul unei suprapuneri. Aceasta înseamnă că nu vom putea plasa pătratul portocaliu în fața celui albastru deoarece se află în contexte diferite de suprapunere.
Dacă dorim ca pătratele albastre și portocalii să facă parte din același context de suprapunere, putem face din pătratul albastru un copil al pătratului roz. Acest lucru va muta pătratul albastru în spatele celui portocaliu.
https://codepen.io/ivhed/pen/erGoJE
Contextul de suprapunere este creat nu numai prin aplicarea proprietății z-index. Există câteva alte proprietăți care determină elementele să creeze contexte suprapuse. Câteva exemple: filtru, opacitate și transformare.
Să revenim la exemplul nostru anterior. Patrat albastru din nou asociat cu roz. De data aceasta, în loc să adăugăm o proprietate z-index la pătratul roz, îi vom aplica un filtru.
Albastru, .roz, .portocaliu (
poziție: absolută;
) .roz (
filtru: rotire nuanță (20deg);
) .albastru (
indicele z: 2;
) .portocale (
indicele z: 3;
) .verde (
indicele z: 100;
}
Pătratul portocaliu are încă un z-index mai mare decât cel albastru, dar apare în continuare în spatele lui. Acest lucru se datorează faptului că valoarea filtrului a determinat pătratul roz să creeze un nou context de suprapunere.
rezumat
Folosind indexul z pe elementele poziționate, putem schimba ordinea implicită de stivuire a elementelor.
Când sunt aplicate anumite proprietăți CSS, un element poate forma un context de suprapunere. Valorile indexului Z sunt semnificative doar în același context de suprapunere.
Pentru obtinerea Informații suplimentare despre cum funcționează proprietatea z-index, vă recomand să citiți acest articol. Ea a fost cea care m-a inspirat în timp ce lucram la această publicație.
Proprietatea z-index controlează ordinea de aplicare elementele poziționate atunci când se suprapun între ele. Proprietatea acceptă valori întregi pozitive și negative.
Într-un flux normal, poziţia: elementele statice sunt aşezate secvenţial unul după altul în ordinea în care sunt definite în documentul html. Valoarea implicită este z-index: auto; .
Orez. 1. Poziţionarea elementelor de-a lungul axei Z
Proprietatea z-index specifică ordinea elementelor de-a lungul axei Z În mod normal, elementele cu o valoare de indice mare se vor suprapune elemente cu o valoare mai mică și o valoare automată, plasându-le în prim-plan.
Orez. 2. Impactul proprietății z-index asupra elementelor poziționate
Suprapunerea contextului
Dacă indicele z și proprietățile de poziție ale elementelor nu sunt setate în mod explicit, contextul de suprapunere este egal cu ordinea în care apar în cod sursa. Dacă elementele nu au un index z specificat, browserul redă elementele pe pagină în următoarea ordine:
Element rădăcină
Elementele poziționate în ordinea în care apar în codul sursă. Ultimul va fi situat în prim-plan.
Orez. 3. Ordinea implicită a elementelor în spațiul 3D
Lorem ipsum dolor sit amet, consectetur adipiscing elit...
După cum se poate observa din figură, un element cu poziție: absolut; este în prim plan, urmat de text, sub acesta sunt elemente plutitoare cu float: stânga; , elementele bloc nepoziționate sunt plasate în fundal (deoarece elementele plutitoare și poziționate sunt îndepărtate din flux, elementele nepoziționate la nivel de bloc le ignoră și sunt plasate unul după altul, în conformitate cu marcajul, deci elementul .
Proprietatea z-index creează un nou context de suprapunere. Vă permite să schimbați ordinea de stivuire elemente poziționate. Elementele vor fi afișate pe pagină în următoarea ordine (dacă nu sunt setate la proprietăți care afectează contextul de suprapunere - opacitate, filtru, transformare):
Element rădăcină , care conține toate elementele unei pagini web.
Elemente poziționate cu o valoare negativă a indicelui z.
Elemente bloc, care nu sunt plutitoare sau poziționate.
Flotantele flotante nu sunt elemente poziționate în ordinea în care apar în codul sursă.
Elemente nepoziționate în linie (text, imagini).
Elemente poziționate cu valori z-index: 0; și z-index: auto; .
Elemente poziționate cu valori pozitive ale indicelui z. O valoare mare a indicelui va reda elementul în prim-plan. Elementele cu valori z-index egale vor fi redate în funcție de locația lor în codul sursă.
Orez. 4. Proprietatea z-index creează un nou context pentru suprapunerea elementelor în spațiul 3D
Majoritatea proprietăților CSS sunt destul de ușor de utilizat. Adesea, aplicarea unei proprietăți CSS unui element din marcajul dvs. va produce rezultate imediate - de îndată ce reîmprospătați pagina, setul de valori al proprietății va fi aplicat și veți vedea imediat rezultatul. Alte proprietăți CSS, totuși, sunt mai complexe și vor funcționa numai după setarea unui anumit set de condiții.
Proprietatea z-index aparține ultimului grup de proprietăți. Această proprietate a provocat confuzie larg răspândită și frustrare mai des decât orice altă proprietate CSS existentă. În mod ironic, totuși, când ajungi să cunoști indicele z, veți realiza că această proprietate este foarte simplă și oferă o metodă eficientă pentru rezolvarea multor probleme de aspect.
În acest articol, veți afla ce este indexul z, cum poate fi interpretat greșit și câteva exemple de utilizare. În plus, veți învăța câteva diferențe în comportamentul browserului atunci când gestionați proprietatea z-index, afectând în principal versiunile anterioare de Internet Explorer și Firefox. Această prezentare detaliată a z-index va oferi dezvoltatorilor o bază excelentă pentru utilizarea acestei proprietăți în mod sigur și eficient.
Ce este?
Proprietate indicele z definește nivelul de stivă al unui element HTML. „Nivelul stivei” se referă la poziția unui element pe axa Z (direcțional perpendicular pe axa X sau axa Y). Elementul căruia i se atribuie cea mai mare valoare z-index va fi poziționat chiar în partea de sus a stivei de straturi. Acest teanc de straturi este poziționat perpendicular pe ecran sau pe zona de vizualizare.
Vedere 3D a axei Z:
Pentru a demonstra cum funcționează indicele z, imaginea de mai sus mărește ușor afișarea elementelor stivei în raport cu fereastra.
Ordine normală de stivă
Pe o pagină HTML, ordinea normală a stivei (adică ordinea elementelor pe axa Z) este determinată de un număr de factori. Următoarea este o listă care arată ordinea în care sunt stivuite elementele, începând de jos. Nu există elemente în această listă cu proprietatea z-index atribuită:
- Fundalul și chenarul unui element care creează contextul stivei
- Elemente cu context negativ de stivă, în ordinea apariției
- Elemente bloc nepoziționate, neplutitoare, în ordinea apariției
- Elemente nepoziţionate, plutitoare, în ordinea apariţiei
- Elemente în linie, în ordinea apariției
- Elemente poziționate, în ordinea apariției
Când proprietatea z-index este utilizată corect, poate schimba ordinea normală a stivei.
Desigur, ordinea elementelor dintr-o stivă nu este la fel de clară atâta timp cât elementele sunt poziționate suprapunându-se. Prin urmare, pentru a vedea ordinea normală a stivei, se pot folosi marjele negative așa cum se arată mai jos:
Bloc gri
Bloc albastru
Bloc maro
Blocurilor prezentate mai sus li se atribuie culori diferite de fundal și chenar, iar ultimelor două blocuri li se atribuie în mod specific o umplutură superioară negativă pentru a ilustra ordinea normală de stivuire. Blocul gri apare primul în aspect, blocul albastru al doilea, iar blocul maro al treilea. Marjele negative atribuite demonstrează perfect acest fapt. Aceste elemente nu au valori atribuite indicele z, sunt localizate pe pagină în ordinea obișnuită sau implicit. Se suprapun reciproc datorită marjelor negative.
De ce există confuzie?
Deși z-index nu este o proprietate dificil de înțeles, dacă este interpretat greșit, poate fi confuz pentru dezvoltatorii începători. Această concepție greșită apare deoarece proprietatea z-index va funcționa numai pentru un element care are proprietatea de poziție setată la una dintre cele trei valori: absolut, fix sau relativ.
Pentru a demonstra că z-index funcționează numai pe elementele poziționate, iată aceleași trei blocuri, împreună cu valorile z-index aplicate pentru a schimba ordinea normală a stratului:
Bloc gri
Bloc albastru
Bloc maro
Blocul gri are o valoare z-index setată la „9999”; blocul albastru are o valoare z-index setată la „500”; și blocul maro, valoarea z-index este setată la „1”. Ar fi logic să presupunem că ordinea în care sunt stivuite blocurile ar trebui să se schimbe. Dar acest lucru nu s-a întâmplat în acest exemplu, deoarece niciunul dintre aceste elemente nu avea o proprietate de poziție atribuită.
Iată aceleași blocuri, dar cu poziția: proprietatea relativă adăugată fiecăruia dintre ele și proprietățile z-index atribuite anterior:
Bloc gri
Bloc albastru
Bloc maro
Acum, am obținut rezultatul dorit: ordinea elementelor s-a schimbat; blocul gri se suprapune pe albastru, iar albastrul, la rândul său, se suprapune pe maro.
Sintaxă
Proprietatea z-index poate afecta ordinea stratului atât a elementelor bloc, cât și a elementelor inline și este setată prin alocarea unei valori pozitive sau negative, întregi sau automate. Valoarea auto dă elementului aceeași ordine a stratului ca și elementul părinte.
Iată cum arată codul CSS pentru al treilea exemplu, unde proprietatea z-index este aplicată corect:
#grey_box ( lățime: 200px; înălțime: 200px; chenar: solid 1px #ccc; fundal: #ddd; poziție: relativ; z-index: 9999; ) #blue_box ( lățime: 200px; înălțime: 200px; chenar: solid 1px # 4a7497; fundal: #8daac3; index z: 500;
Din nou, merită să reamintim din nou, în special pentru dezvoltatorii începători, că proprietatea z-index nu va funcționa până când nu aplicați poziționarea elementului.
Folosind JavaScript
Dacă doriți să schimbați dinamic valoarea z-index a unui element folosind JavaScript, este destul de simplu. Sintaxa este aceeași ca pentru accesarea majorității proprietăților CSS, trebuie doar să înlocuiți proprietățile CSS cu silabe cu cod, așa cum se arată mai jos:
Var myElement = document.getElementById("cutie_aur"); myElement.style.position = „rudă”; myElement.style.zIndex = "9999";
După cum se arată în exemplu, proprietatea CSS „z-index” este scrisă ca „zIndex”. De asemenea, „culoare-fond” devine „culoare fundal”, „greutate font” devine „greutate font” și așa mai departe.
De asemenea, folosind codul de mai sus, proprietatea de poziție este modificată deoarece z-index va funcționa numai pe un element poziționat.
Procesare incorectă în IE și Firefox
În anumite circumstanțe, unele browsere pot trata proprietatea z-index în mod diferit, inclusiv versiunile Internet Explorer 6 și 7 și Firefox versiunea 2.
Elemente
În Internet Explorer 6, elementul
Element
– Selectați anul – 2009 2010 2011
Bloc maro
Dacă te uiți la acest exemplu, folosind browserul IE6, vei vedea că elementul
Această eroare în IE6 cauzează probleme cu meniurile drop-down care nu se pot suprapune elementelor
Poziționarea elementelor părinte în IE6/7
Internet versiuni Explorer 6 și 7, resetează incorect contextul stivei în ceea ce privește copiii din apropiere, poziționați. Pentru a demonstra asta, puțin mai mult problema complexa, să afișăm din nou două blocuri, dar de data aceasta, vom include primul bloc într-un element poziționat.
Bloc gri
Bloc albastru
Blocului gri i se atribuie un index z de „9999”, blocului albastru i se atribuie un indice z de „1”, iar ambele elemente sunt poziționate. Prin urmare, dacă este procesat corect, blocul gri ar trebui să fie plasat deasupra blocului albastru.
Din nou, dacă te uiți la acest exemplu în IE6 sau IE7, vei vedea cum blocul albastru se suprapune cu blocul gri. Aceste browsere „resetează” incorect contextul stivei în raport cu părintele poziționat, dar nu ar trebui să fie așa. Blocul gri este alocat cel mai mult valoare ridicata z-index și ar trebui să fie poziționat deasupra blocului albastru. Toate celelalte browsere procesează acest exemplu corect.
Valori negative în Firefox 2
ÎN versiuni Firefox 2, o valoare negativă a indicelui z poziționează elementul în spatele ordinii straturilor, mai degrabă decât să-l poziționeze deasupra fundalului și a marginilor elementului, care stabilesc contextul de stivuire. Mai jos este o imagine care ilustrează această eroare în Firefox 2:
Mai jos este versiunea HTML a acestei imagini, așa că dacă vă uitați la pagina în Firefox 3 sau altul, browser modern, veți vedea procesarea corectă: fundalul casetei gri (care este elementul care stabilește contextul stivei) apare în partea de jos, iar textul situat în caseta gri apare deasupra casetei albastre, care urmează regulile de „ordine normală a straturilor”, așa cum s-a discutat mai sus.
Bloc gri
Bloc albastru
Exemple de utilizare
Aplicarea proprietății z-index la diferite elemente dintr-o pagină poate oferi decizie rapidă Pentru diverse sarcini aspect și permite designerilor să creeze modele mai creative. Niste, exemple interesante Utilizările indicelui z în practică sunt prezentate mai jos.
Tipuri de instrumente CSS
Proprietatea z-index poate fi utilizată ca parte a unui tooltip bazat pe CSS, așa cum se arată în exemplul de mai jos de la trentrichardson.com:
Galerie foto
Galeria foto Polaroid, folosește unele funcții CSS3 împreună cu z-index pentru a crea o galerie foto cu un efect de hover distractiv.
Efect de hover pentru miniaturi de lux – aici, valoarea z-index este modificată folosind un script JQuery.
Caseta de lumina
Există o cantitate mare scripturi casete luminoase de înaltă calitate pentru utilizare gratuită, de exemplu pluginul JQuery FancyBox. Majoritatea, dacă nu toate, folosesc proprietatea z-index:
Scripturile casete luminoase folosesc o imagine PNG translucidă pentru a întuneca fundalul în timp ce element nou ca o fereastră
Orice elemente poziționate pe o pagină web se pot suprapune într-o anumită ordine, simulând astfel o a treia dimensiune perpendiculară pe ecran. Fiecare element poate fi fie sub, fie deasupra altor obiecte de pe pagina web, plasarea lor de-a lungul axei z este controlată de z-index . Această proprietate funcționează numai pentru elementele a căror valoare de poziție este absolută, fixă sau relativă.
informatie scurta
Denumiri
Descriere | Exemplu | |
---|---|---|
<тип> | Indică tipul valorii. | <размер> |
A && B | Valorile trebuie să fie afișate în ordinea specificată. | <размер> && <цвет> |
A | B | Indică faptul că trebuie să selectați o singură valoare dintre cele propuse (A sau B). | normal | litere mici |
A || B | Fiecare valoare poate fi folosită independent sau împreună cu altele în orice ordine. | lățime || numara |
Grupează valori. | [ recolta || cruce ] | |
* | Repetați de zero sau de mai multe ori. | [,<время>]* |
+ | Repetați una sau mai multe ori. | <число>+ |
? | Tipul, cuvântul sau grupul specificat este opțional. | medalion? |
(A, B) | Repetați cel puțin A, dar nu mai mult de B ori. | <радиус>{1,4} |
# | Repetați o dată sau de mai multe ori, separate prin virgule. | <время># |
Valori
Numerele întregi (pozitive, negative și zero) sunt folosite ca valori. Cum mai multă valoare, cu cât elementul este mai mare în comparație cu acele elemente care au o valoare mai mică. Dacă valoarea z-index este egală, elementul din prim-plan este cel descris mai jos în codul HTML. Este acceptabilă utilizarea unei valori negative.
Cu exceptia valori numerice se folosește auto - ordinea elementelor în acest caz este construită automat pe baza poziției lor în codul HTML și a apartenenței lor la părinte, deoarece elementele copil au același număr ca și elementul părinte.
Exemplu
ÎN în acest exemplu Când treceți cursorul peste hartă, acesta ajunge la marginea din față, suprapunând parțial restul imaginilor (Fig. 1).
Orez. 1. Schimbarea ordinii cardurilor
Model obiect
Un obiect.stil.zIndex
Notă
Lista creată cu
Versiunile de Internet Explorer până la 7.0 inclusiv interpretează automat ca 0.
ÎN browser Firefox până la versiunea 2.0 inclusiv, o valoare z-index negativă poziționează elementul sub fundalul paginii web și conținutul acesteia.
Specificație
Fiecare specificație trece prin mai multe etape de aprobare.
- Recomandare - Specificația a fost aprobată de W3C și este recomandată ca standard.
- Recomandarea candidatului ( Recomandare posibilă ) - grupul responsabil de standard este mulțumit că își îndeplinește obiectivele, dar necesită ajutor din partea comunității de dezvoltare pentru a implementa standardul.
- Recomandare propusă Recomandare sugerată) - în această etapă documentul este înaintat Consiliului Consultativ W3C pentru aprobare finală.
- Proiect de lucru - O versiune mai matură a unui proiect care a fost discutat și modificat pentru revizuire comunitară.
- Schița redactorului ( Proiect editorial) - o versiune preliminară a standardului după ce au fost făcute modificări de către editorii de proiect.
- Ciornă ( Proiect de specificație) - prima versiune a standardului.