Ghid complet cu exemple practice pentru elemente care rămân vizibile
⬇️ Scroll în jos pentru a vedea toate exemplele în acțiune! ⬇️
🔒 Position: Fixed - Explicație Detaliată
Position: fixed poziționează elementul relativ la viewport (fereastra browser-ului).
Elementul rămâne în aceeași poziție chiar și când utilizatorul face scroll. Este scos complet din fluxul documentului.
🎯 Caracteristici principale:
✅ Rămâne fix pe ecran indiferent de scroll
✅ Se poziționează relativ la viewport, nu la părinte
✅ Este scos din fluxul normal (nu ocupă spațiu)
✅ Perfect pentru: navigări, butoane de acțiune, notificări
⚠️ Poate acoperi conținut - necesită gestionare atentă
📱 Exemplul 1: Navigare Fixed
Bara de navigare apare când dai scroll în jos (scroll pentru a vedea!):
Status: Ascunsă
.navigation {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 1000; /* Deasupra altor elemente */
/* Width: 100% implicit din left: 0 și right: 0 */
}
🎛️ Exemplul 2: Sidebar Fixed
Sidebar care rămâne vizibil în timp ce conținutul poate fi scrollat:
Sidebar Fixed
📊 Dashboard
👤 Profil
⚙️ Setări
📧 Mesaje
📈 Statistici
Conținut Principal
Acest conținut poate fi mult mai lung și va putea fi scrollat, în timp ce sidebar-ul rămâne fix.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
.sidebar {
position: fixed;
width: 200px;
height: 100vh; /* Înălțime completă */
left: 0;
top: 0;
overflow-y: auto; /* Scroll dacă conținutul e prea lung */
}
➕ Exemplul 3: Butoane de Acțiune Fixe (FAB)
Butoane flotante care rămân în colțul ecranului:
Uită-te în colțul din dreapta-jos al ecranului pentru butoanele de acțiune! →
Acestea rămân vizibile oricât de mult dai scroll pe pagină.
Position: sticky este un hibrid între relative și fixed. Elementul se comportă ca relative
până când ajunge la un prag de scroll specificat, apoi devine fixed în acea poziție.
🎯 Caracteristici principale:
✅ Comută între relative și fixed automat
✅ Rămâne în container-ul părinte (nu iese din el)
✅ Își păstrează spațiul în flux când e relative
✅ Perfect pentru: headere de secțiuni, navigări, tabele
⚠️ Necesită specificarea top/bottom/left/right pentru a funcționa
⚠️ Funcționează doar în container cu overflow vizibil sau scroll
📑 Exemplul 6: Sticky Headers în Liste
Headere care se lipesc la top când dai scroll (scroll în container!):
📱 Categoria: Telefoane
iPhone 15 Pro Max
Samsung Galaxy S24 Ultra
Google Pixel 8 Pro
💻 Categoria: Laptopuri
MacBook Pro M3
Dell XPS 15
ThinkPad X1 Carbon
🎧 Categoria: Căști
AirPods Pro 2
Sony WH-1000XM5
Bose QuietComfort Ultra
⌚ Categoria: Smartwatch
Apple Watch Ultra 2
Samsung Galaxy Watch 6
Garmin Fenix 7
.sticky-header {
position: sticky;
top: 0; /* Se lipește când ajunge la top */
z-index: 10; /* Deasupra conținutului */
/* Rămâne în container, nu iese din el */
}
1. Conținut acoperit de elemente fixed:
Soluție: Adaugă padding pe body sau container pentru a compensa înălțimea elementului fixed.
/* Compensează pentru nav fixed de 60px */
body { padding-top: 60px; }
2. Fixed pe mobile nu funcționează cum te aștepți:
Soluție: Testează pe dispozitive reale și folosește viewport units.
/* Mai bun pentru mobile */
.fixed-element {
position: fixed;
width: 100vw; /* Full viewport width */
bottom: env(safe-area-inset-bottom); /* Pentru iPhone */
}
3. Z-index conflicts:
Soluție: Creează o scară z-index consistentă în aplicație.
🔧 Pentru Sticky:
1. Sticky nu funcționează:
Verifică: ✓ Ai specificat top/bottom/left/right? ✓ Părintele are overflow: hidden? ✓ Elementul are height definit?