Átfedési kontextusok vagy amikor a z-index nem működik

Átfedési kontextusok vagy amikor a z-index nem működik

Nem alkotom az első oldalt, de először szembesültem ezzel a problémával. Az egyik formatervezési mintában meg kellett változtatnom a katalógus menüjét. Kezdetben egy szinttel rendelkező menüt használtak, de az ügyfelek üzleti tevékenysége nőtt, és egy tipikus legördülő többszintű menüt kellett végrehajtania. "Nem probléma!" - gondoltam, és gyorsan kezdtem rajzolni további stílusokat jelöléssel. Az idő nem sokat vett ehhez, de az első teszt sikertelen volt. A menüszintek megjelentek a szándék szerint, de valamilyen okból kifolyólag az oldal központi részének elemei fedtek le.

- Hé! - villant a fejembe. Valószínűleg az egyik stílus hiányzik a "z-index" tulajdonság, amely lehetővé teszi a pozícionált elemek átfedésének sorrendjét az oldalon. Kezdte hozzá a "z-indexet", és semmi jó nem jött rá. Bármilyen értéket, amelyet nem adtam hozzá, az oldal középpontjának elemei továbbra is lefedték az étlapot.

A kétértelmű z-index

Úgy tűnik, hogy bonyolult lehet a z-indexrel? Mindenki tudja, hogy az oldalakon elhelyezett elemek átfedhetnek. Az átfedés sorrendjének kezelése csak a "z-index" tulajdonságot teszi lehetővé. Ha például két olyan elem van, amelynek z-index értéke 5 és 10, akkor az utolsó megjelenik az előtérben, mert tíz több mint öt, és még közelebb van. Ha a "z-index" tulajdonság nincs megadva, az átfedés sorrendjét a dokumentumban szereplő elemek sorrendje határozza meg.

Nincs komplikáció, amíg mélyebbre nem ásunk. Az első nehézségek akkor kezdődnek, amikor megjelenik az úgynevezett overlay-kontextusok. Egy átfedés kontextusában azokat az elemeket értjük, amelyekben a közös szülők elöl vagy hátul helyezkednek el.

Az overlay kontextus gyökér eleme. Például van valami

amelyre az átfedés kontextusát definiáljuk. Ezért minden gyermeke az átfedés azonos kereteibe esik.

Itt jön a szórakoztató rész. Az átfedési kontextusok nem keresztezik egymást. Ha az elemet egy kontextus legvégén rendezzük, akkor nem derül ki a szomszédos környezet eleme felett. A "z-index" értékének a legértékesebb számokra való átállítása nem fogja eredményezni a várt hatást.

Amikor új overlay kontextus alakul ki

A specifikáció több feltételt határoz meg az overlay kontextus kialakításához:

  • Az elem szerepe a HTML-dokumentum (címke) gyökér eleme;
  • Az elem áttetszőséggel rendelkezik (emlékezzen az opacitás tulajdonságára) kevesebb, mint egy;
  • Az elem nem statikusan van elhelyezve, és a z-index! = Auto tulajdonság.

    Előretekintve azt fogom mondani, hogy a feladat megoldásához csak a menü gyökérelemének átláthatóságát (opacitást) kellett hozzáadnia, és mindent el kellett dolgoznia, amint azt tervezték.

    Az elemek megjelenítése egy átfedési környezetben

    A fentiek jobb megértéséhez emlékezzen egyszer és mindenkorra az elemek megjelenítésének sorrendjére az átfedések egy összefüggésében (távolról a közelre).

  • A kontextus gyökér eleme, azaz az elem, amely az átfedés kontextusát képezte;
  • Pozicionáló elemek (+ gyerekek) negatív z-indexel. Azok a tételek, amelyeknek z-indexje több, közelebb kerülnek megjelenítésre. Az azonos értékű "z-index" elemek rendben vannak (a jelölés szerint);
  • A nem elhelyezett elemek sorrendben vannak elrendezve;
  • A pozícionált elemek (+ leszármazottak) a z-index auto értékével rendezve vannak (a jelölés szerint);
  • Pozitív elemek (+ gyerekek) pozitív z-indexrel (minél nagyobb a z-index, annál közelebb lesz az elem). Ha két elemnek ugyanaz a "z-indexe" van, akkor a leképezés sorrendjét a jelölés határozza meg.