Vlastnosť z-index: podrobný prehľad. Prekryvné kontexty alebo keď z-index nefunguje Css z index funguje len s pevným

Domov / Záchrana dát

z-index

Vlastnosť z-index CSS definuje poradie prvkov, keď sa pri umiestnení navzájom prekrývajú. To znamená, že ho môžete použiť na určenie, ktorý prvok (vrstva) bude navrchu a ktorý (a v akom poradí) bude pod ním.

Ale také jednoduché to nie je. Táto vlastnosť je jednou z mála v CSS, ktorá vykonáva dve úplne odlišné funkcie naraz (napríklad pozíciu):

  1. Vlastnosť z-index sa používa na usporiadanie umiestnených prvkov.
  2. Každý prvok so z-indexom, ktorý sa nerovná automatickému vytváraniu nová úroveň zoradenie, voči ktorému sa (usporiadanie) vyskytuje pre všetkých jeho potomkov (prirodzene, potomkovia, ktorých z-index sa nerovná auto, už vytvárajú svoju vlastnú úroveň zoradenia). To je dôvod, prečo napríklad prvok z jednej úrovne usporiadania nemôže byť „umiestnený“ medzi dva prvky z inej.
  3. Koreňový prvok vytvorí koreňovú úroveň usporiadania, aj keď nemá zadaný z-index.

Pozrime sa na tento príklad:

DIV3
DIV4

V tomto príklade pre akúkoľvek číselnú hodnotu z-indexu budete môcť zameniť iba DIV3 a DIV4. Ale nasledujúce nebude fungovať:

  1. DIV3 a DIV4 nebude možné vložiť pod DIV2, pretože sú zapnuté rôzne úrovne objednávanie. DIV2 je na úrovni vytvorenej prvkom DIV1 a DIV3 a DIV4 sú na úrovni vytvorenej prvkom DIV2. Aby boli na rovnakej úrovni, musíte z DIV2 odstrániť z-index alebo ho nastaviť na auto .
  2. Nepodarí sa umiestniť DIV2 pod DIV1. Aby to fungovalo, musíte nastaviť auto už pri DIV1.
  3. A tak ďalej...

V rôznych učebniciach a referenčných knihách sa pojem „úroveň objednávania“ nazýva inak – miestny pozičný kontext, miestny kontext zásobníka atď. V oficiálnej špecifikácii CSS je to napísané ako „lokálny kontext stohovania“. Ale podľa môjho názoru je fráza „úroveň usporiadania“ pre väčšinu rusky hovoriacich ľudí bližšie k pochopeniu, a preto som zaviedol túto definíciu.

Typ nehnuteľnosti

Účel: polohovanie.

Platí pre: prvky s inou ako statickou polohou.

Zdedené: nie.

hodnoty

Hodnota vlastnosti z-index je určiť poradie prvkov jedným z nasledujúcich spôsobov.

  • číslo- akékoľvek kladné alebo záporné celé číslo, ktoré určuje poradie prvkov v rámci danej úrovne usporiadania. Prvok s vyššou hodnotou sa umiestni nad prvky s nižšou hodnotou. Ak majú dva prvky rovnaké hodnoty, potom ten nižšie v kóde HTML bude navrchu. Okrem toho prvok, ktorý má číselnú hodnotu (vrátane 0), vytvára novú úroveň usporiadania pre svoje umiestnené podriadené položky.
  • auto- s touto hodnotou má prvok v aktuálnej úrovni usporiadania rovnaký z-index ako jeho predchodca, ktorý vytvoril túto úroveň. Samotný prvok však nevytvára novú úroveň usporiadania pre svojich potomkov. Ak existuje niekoľko prvkov s danou hodnotou, potom ten, ktorý sa zobrazí nižšie v kóde HTML stránky, bude navrchu.
  • dediť- zdedí hodnotu z-indexu z rodičovského prvku.

Percentuálny údaj: neexistuje.

Predvolená hodnota: auto.

Keďže vo vnútri prvku, ktorý vytvára úroveň usporiadania, môžu byť nielen umiestnené prvky, ale aj niektoré ďalšie, prehliadače používajú určité pravidlá na ich vrstvenie v rámci danej úrovne:

  1. Prvá vrstva obsahuje pozadie a rám prvku, ktorý vytvoril túto úroveň usporiadania.
  2. Navrchu, v druhej vrstve, sú podradené prvky, ktoré majú záporné hodnoty z-indexu, pričom prvok s hodnotou bližšou k nule sa nachádza vyššie.
  3. Ďalšou vrstvou sú podradené prvky, ktoré nie sú zabudované (inline).
  4. Štvrtú vrstvu tvoria plávajúce prvky (float) spolu s ich obsahom.
  5. Piatou vrstvou sú zabudované podradené prvky.
  6. Šiesta vrstva obsahuje prvky so z-indexom auto alebo 0, pričom prvok nižšie v kóde je vyšší.
  7. Nakoniec prvky s kladnými hodnotami z-indexu sú úplne hore, pričom prvok s vyššou hodnotou je vyšší.

Syntax

z-index: auto | číslo | dediť

Príklad CSS: Použitie z-indexu

seodon.ru - <a href="https://ermake.ru/sk/css-perenos-dlinnyh-slov-kak-dobavit-s-pomoshchyu-svoistv-css-perenos-stroki/">Vlastnosť CSS</a> z-index

DIV1
DIV2
DIV3

Výsledok.

CSS verzie

Verzia:CSS 1CSS 2CSS 2.1CSS 3
Podpora:ánoánoánoáno

Prehliadače

Prehliadač:Internet Explorer Google ChromeMozilla FirefoxOpera
Verzia:6.0 a 7.08.0 a vyššie2.0 a vyššie2.0 3.0 a vyššie9.2 a vyššie3.1 a vyššie
Podpora:ČiastočneánoánoČiastočneánoánoáno

Internet Explorer 6.0 a 7.0 nerozumejú hodnote zdedenia. Aj v týchto prehliadačoch sa vytvárajú nové úrovne usporiadania všetkými umiestnenými prvkami, nielen prvkami s číselnými hodnotami z-indexu.

IE 6.0 vždy umiestni prvok , V internetový prehliadač Explorer 6 sa vždy zobrazuje nad ostatnými prvkami bez ohľadu na hodnotu z-indexu.

Verzie programu Internet Explorer do 7.0 vrátane nepodporujú hodnotu zdedenia a interpretujú auto ako 0.

Vo verziách prehliadača Firefox do 2.0 vrátane záporná hodnota z-index umiestni prvok pod pozadie webovej stránky a jej obsahu.

Problém so z-indexom je, že veľa ľudí jednoducho nechápe, ako to funguje.
Všetko popísané nižšie je v špecifikácii W3C. Žiaľ, nie každý to číta.

Popis problému:

Povedzme teda, že máme HTML kód pozostávajúci z 3 prvkov.
Každá z nich v sebe obsahuje jednu. A každý má zase svoje vlastné pozadie: červené, zelené a modré. Navyše, každý z nich je umiestnený úplne na ľavom hornom okraji dokumentu tak, že mierne prekrýva ten vedľa neho. Prvý má z-index rovný 1, ďalšie dva nemajú nastavený z-index.

Nižšie je uvedený HTML kód so základným dizajnom CSS.

Červená
Zelená
Modrá

.červená, .zelená, .modrá ( pozícia: absolútna; ) .červená ( pozadie: červená; z-index: 1; ) .zelená ( pozadie: zelená; ) .modrá ( pozadie: modrá; )
Príklad na jsfiddle

Úloha: uistite sa, že červená je za modrou a zelenou bez toho, aby ste porušili niektoré z nasledujúcich pravidiel:

  • Značenie HTML nemôžete zmeniť
  • K prvkom nemôžete meniť/pridávať z-index
  • Nie je možné meniť/pridávať umiestnenie prvkov

Riešenie:

Riešením je pridať o niečo menej ako jednu priehľadnosť k prvej (rodič červenej).
Tu je css, ktorý to ilustruje:
div:first-child ( nepriehľadnosť: 0,99; )

Hmm, niečo tu nesedí. Čo s tým má spoločné transparentnosť? Ako môže ovplyvniť poradie prekrývajúcich sa prvkov? Myslíte si to isté? Vitajte v klube!
Dúfam, že v druhej časti článku všetko padne na svoje miesto.

Poradie prekrývajúcich prvkov:

Z-index sa zdá byť veľmi jednoduchý: čím vyššia hodnota, tým bližšie k nám bude prvok, t.j. prvok so z-indexom 5 bude prekrývať prvok so z-indexom 2, však? V skutočnosti nie.
Toto je problém z-indexu. Všetko sa zdá byť také zrejmé, že väčšina vývojárov nevenuje dostatok času štúdiu tejto problematiky.

Akýkoľvek prvok v HTML dokument môže byť buď v popredí alebo v pozadí. Každý to vie. Pravidlá, ktoré definujú toto poradie, sú jasne popísané v špecifikácii, no, ako som uviedol vyššie, nie každý im plne rozumie.

Ak vlastnosti z-index a umiestnenie nie sú nastavené explicitne, všetko je jednoduché: poradie ukladania sa rovná poradiu prvkov v HTML. (V skutočnosti je to trochu zložitejšie, ale pokiaľ nepoužívate záporné hodnoty výplne na prekrytie vložených prvkov, nenarazíte na okrajové prípady)

Ak explicitne určíte umiestnenie pre prvky (a ich potomkov), tieto prvky budú prekrývať prvky bez explicitnej vlastnosti umiestnenia. (Keď hovorím „explicitne špecifikujte umiestnenie“, mám na mysli akúkoľvek inú hodnotu ako statickú, napríklad: absolútnu alebo relatívnu).

A nakoniec prípad, keď je daný z-index. Na začiatok je prirodzené predpokladať, že prvky s veľkým z-indexom budú nad prvkami s menším z-indexom a akýkoľvek prvok s množinou z-indexov bude nad prvkom bez množiny z-indexov, ale toto nie je tento prípad. Po prvé, z-index sa berie do úvahy iba na explicitne umiestnených prvkoch. Ak sa pokúsite nastaviť z-index na neumiestnenom prvku, nič sa nestane. Po druhé, hodnoty z-indexu môžu vytvárať kontexty prekrytia. Hmm, veci sa skomplikovali, však?

Kontext prekrytia

Prvky so spoločnými rodičmi, ktoré sa spoločne presúvajú do popredia alebo pozadia, sú známe ako prekryvný kontext. Pochopenie kontextu ukladania je kľúčom k pochopeniu z-indexu a poradia stohovania prvkov.

Každý kontext prekrytia má svoj vlastný koreňový prvok v štruktúre HTML. V momente, keď sa na prvku vytvorí nový kontext, všetky podradené prvky tiež spadajú do tohto kontextu a zaujmú svoje miesto v poradí prekrytí. Ak je prvok umiestnený na úplnom spodku jedného prekryvného kontextu, neexistuje žiadny spôsob, ako by sa mohol zobraziť nad iným prvkom v susednom prekryvnom kontexte vyššie v hierarchii, dokonca aj s z-indexom nastaveným na milión.

Nový kontext sa môže vytvoriť v týchto prípadoch:

  • Ak je prvok koreňovým prvkom dokumentu (prvkom)
    Ak prvok nie je staticky umiestnený a jeho hodnota z-indexu nie je automatická
    Ak má prvok nepriehľadnosť menšiu ako 1

Problém so z-indexom je, že veľa ľudí jednoducho nechápe, ako to funguje.
Všetko popísané nižšie je v špecifikácii W3C. Žiaľ, nie každý to číta.

Popis problému:

Povedzme teda, že máme HTML kód pozostávajúci z 3 prvkov.
Každá z nich v sebe obsahuje jednu. A každý má zase svoje vlastné pozadie: červené, zelené a modré. Navyše, každý z nich je umiestnený úplne na ľavom hornom okraji dokumentu tak, že mierne prekrýva ten vedľa neho. Prvý má z-index rovný 1, ďalšie dva nemajú nastavený z-index.

Nižšie je uvedený HTML kód so základným dizajnom CSS.

Červená
Zelená
Modrá

.červená, .zelená, .modrá ( pozícia: absolútna; ) .červená ( pozadie: červená; z-index: 1; ) .zelená ( pozadie: zelená; ) .modrá ( pozadie: modrá; )
Príklad na jsfiddle

Úloha: uistite sa, že červená je za modrou a zelenou bez toho, aby ste porušili niektoré z nasledujúcich pravidiel:

  • Značenie HTML nemôžete zmeniť
  • K prvkom nemôžete meniť/pridávať z-index
  • Nie je možné meniť/pridávať umiestnenie prvkov

Riešenie:

Riešením je pridať o niečo menej ako jednu priehľadnosť k prvej (rodič červenej).
Tu je css, ktorý to ilustruje:
div:first-child ( nepriehľadnosť: 0,99; )

Hmm, niečo tu nesedí. Čo s tým má spoločné transparentnosť? Ako môže ovplyvniť poradie prekrývajúcich sa prvkov? Myslíte si to isté? Vitajte v klube!
Dúfam, že v druhej časti článku všetko padne na svoje miesto.

Poradie prekrývajúcich prvkov:

Z-index sa zdá byť veľmi jednoduchý: čím vyššia hodnota, tým bližšie k nám bude prvok, t.j. prvok so z-indexom 5 bude prekrývať prvok so z-indexom 2, však? V skutočnosti nie.
Toto je problém z-indexu. Všetko sa zdá byť také zrejmé, že väčšina vývojárov nevenuje dostatok času štúdiu tejto problematiky.

Akýkoľvek prvok v dokumente HTML môže byť v popredí alebo na pozadí. Každý to vie. Pravidlá, ktoré definujú toto poradie, sú jasne popísané v špecifikácii, no, ako som uviedol vyššie, nie každý im plne rozumie.

Ak vlastnosti z-index a umiestnenie nie sú nastavené explicitne, všetko je jednoduché: poradie ukladania sa rovná poradiu prvkov v HTML. (V skutočnosti je to trochu zložitejšie, ale pokiaľ nepoužívate záporné hodnoty výplne na prekrytie vložených prvkov, nenarazíte na okrajové prípady)

Ak explicitne určíte umiestnenie pre prvky (a ich potomkov), tieto prvky budú prekrývať prvky bez explicitnej vlastnosti umiestnenia. (Keď hovorím „explicitne špecifikujte umiestnenie“, mám na mysli akúkoľvek inú hodnotu ako statickú, napríklad: absolútnu alebo relatívnu).

A nakoniec prípad, keď je daný z-index. Na začiatok je prirodzené predpokladať, že prvky s veľkým z-indexom budú nad prvkami s menším z-indexom a akýkoľvek prvok s množinou z-indexov bude nad prvkom bez množiny z-indexov, ale toto nie je tento prípad. Po prvé, z-index sa berie do úvahy iba na explicitne umiestnených prvkoch. Ak sa pokúsite nastaviť z-index na neumiestnenom prvku, nič sa nestane. Po druhé, hodnoty z-indexu môžu vytvárať kontexty prekrytia. Hmm, veci sa skomplikovali, však?

Kontext prekrytia

Prvky so spoločnými rodičmi, ktoré sa spoločne presúvajú do popredia alebo pozadia, sú známe ako prekryvný kontext. Pochopenie kontextu ukladania je kľúčom k pochopeniu z-indexu a poradia stohovania prvkov.

Každý kontext prekrytia má svoj vlastný koreňový prvok v štruktúre HTML. V momente, keď sa na prvku vytvorí nový kontext, všetky podradené prvky tiež spadajú do tohto kontextu a zaujmú svoje miesto v poradí prekrytí. Ak je prvok umiestnený na úplnom spodku jedného prekryvného kontextu, neexistuje žiadny spôsob, ako by sa mohol zobraziť nad iným prvkom v susednom prekryvnom kontexte vyššie v hierarchii, dokonca aj s z-indexom nastaveným na milión.

Nový kontext sa môže vytvoriť v týchto prípadoch:

  • Ak je prvok koreňovým prvkom dokumentu (prvkom)
    Ak prvok nie je staticky umiestnený a jeho hodnota z-indexu nie je automatická
    Ak má prvok nepriehľadnosť menšiu ako 1

© 2024 ermake.ru -- O oprave PC - Informačný portál