CSS Pozicionálás (Position)

A CSS position tulajdonságok: static, relative, absolute, fixed és sticky vizuális bemutatása

A weboldalak elemei alapértelmezésben egymás alá kerülnek, ahogy a HTML kódban megírtad őket. Ezt hívjuk normál dokumentumfolyamnak (Normal Document Flow). De mi van akkor, ha egy "Vissza a tetejére" gombot akarsz rögzíteni a képernyő jobb alsó sarkába, ami görgetéskor is ott marad? Erre való a CSS position tulajdonsága.

A Position 5 értéke

1. Static (Az alapértelmezett)

Minden HTML elem alapértelmezett pozíciója a static. Az elem a normál dokumentumfolyam szerint helyezkedik el. A top, bottom, left és right tulajdonságok nem hatnak rá.

2. Relative (Relatív)

Ha egy elemnek position: relative; értéket adsz, az elem továbbra is a normál dokumentumfolyamban marad (a helye le lesz foglalva), de a top, bottom, left és right értékekkel eltolhatod az eredeti helyéhez képest.

.doboz {
    position: relative;
    top: 20px;  /* 20 pixellel lejjebb tolja az eredeti helyétől */
    left: 30px; /* 30 pixellel jobbra tolja az eredeti helyétől */
}

3. Absolute (Abszolút) - A legveszélyesebb fegyver

Az abszolút pozicionált elem kikerül a normál dokumentumfolyamból. A böngésző úgy tesz, mintha az elem ott sem lenne, a többi elem pedig felcsúszik a helyére. Az abszolút elem a legközelebbi pozicionált (nem static) szülő eleméhez képest fog elhelyezkedni.

A klasszikus fejlesztői trükk: Ha egy gyermeket abszolút módon akarsz mozgatni egy szülő dobozon belül, a szülőnek mindig adj position: relative; értéket!

.szulo-doboz {
    position: relative; /* Ez lesz a viszonyítási pont */
    width: 500px;
    height: 300px;
}

.gyermek-doboz {
    position: absolute;
    top: 0;
    right: 0; /* A szülő doboz jobb felső sarkába tapad */
}

4. Fixed (Rögzített)

A fixed elem szintén kikerül a dokumentumfolyamból, de ő nem egy szülő elemhez, hanem magához a böngésző ablakához (viewport) viszonyítva helyezkedik el. Bárhogy görget a felhasználó, az elem ott marad a képernyőn. Tipikus példája a rögzített navigációs menü vagy a chat ablak.

.chat-gomb {
    position: fixed;
    bottom: 20px;
    right: 20px;
}

5. Sticky (Ragadós)

A modern webfejlesztés csodája. A sticky egy hibrid a relative és a fixed között. Az elem normálisan görgetődik a tartalommal együtt, egészen addig, amíg el nem ér egy megadott pontot (pl. a képernyő tetejét). Ekkor "odaragad", és fixed elemként viselkedik tovább.

.oldalsav {
    position: sticky;
    top: 0; /* Amikor eléri a képernyő tetejét, odaragad */
}

A Z-index (A harmadik dimenzió)

Amikor elkezdesz elemeket pozicionálni (absolute, fixed), előfordulhat, hogy egymásra csúsznak. Melyik lesz felül? Ezt a z-index tulajdonsággal szabályozzuk. Minél nagyobb a szám, annál feljebb van az elem a rétegrendben (közelebb a felhasználó szeméhez).

.felugro-ablak {
    position: fixed;
    z-index: 9999; /* Biztosítja, hogy minden más elem felett jelenjen meg */
}

Fontos: A z-index csak azokon az elemeken működik, amiknek a position értéke nem static!

← Előző lecke Következő lecke: Flexbox Alapok →