Elementele de lipire, atunci când utilizatorul navighează într-un anumit punct, au devenit un model comun în designul web modern. Veți vedea că este aplicat navigării de top, bara laterală, link-uri partajate sau, eventual, anunțuri; păstrarea vizibilității în fereastra de vizualizare pe măsură ce utilizatorul scroll.
Din punct de vedere istoric, avem nevoie de JavaScript pentru a face acest lucru. Cu toate acestea, comportamentul lipicios a fost propus (și a fost elaborat) ca un nou standard ( lipicios
poziție), permițându-ne să realizăm efectul cu CSS pur. Să aruncăm o privire la modul în care funcționează!
lipicios
este o nouă valoare pentru poziţie
proprietate, adăugată ca parte a modulului CSS3 Layout Module Spec. Acționează în mod similar rudă
de poziționare, prin faptul că nu elimină nimic din fluxul de documente. Cu alte cuvinte, un element lipicios nu are efect asupra poziției elementelor adiacente și nu colapsează elementul părinte.
Având în vedere următorul exemplu, am setat #sidebar
poziția la lipicios
impreuna cu top: 10px
. Este necesară valoarea superioară și specifică distanța de la marginea superioară a ferestrei de vizualizare unde va fi elementul băț.
#sidebar poziție: -webkit-lipicios; // necesare pentru poziția Safari: lipicios; top: 0; // necesar, de asemenea.
Acum, pe măsură ce derulam pagina, atunci când distanța bara laterală ajunge în partea de sus a ferestrei de vizualizare 0
, bara laterală ar trebui să rămână, oferindu-ne în mod eficient o fix
poziţie. Cu alte cuvinte, lipicios
este un fel de hibrid între rudă
și fix
poziţie.
În plus, lipicios
poziția va funcționa într-o casetă de defilare sau într-un element care se deplasează. De data aceasta vom seta top
la 15px
pentru a da mai mult spatiu deasupra bara laterala atunci cand este stickily poziționat (da, este un cuvânt).
Bara laterală va rămâne lipicioasă de-a lungul înălțimii părintelui (adică: atunci când partea inferioară a părintelui atinge partea inferioară a barei laterale, aceasta o va "împinge" din nou de pe pagină).
Ușor, nu-i așa??
Dacă vizionați aceste demo-uri în Chrome, Opera sau Internet Explorer (și Blink), veți fi realizat până acum că nu funcționează. Aceste browsere nu acceptă încă lipicios
valoare.
În Chrome 28, după ce a trecut la motorul Blink, Chrome a decis să elimine lipicios
poziția de la codul său de bază, și chiar a eliminat opțiunea de a le permite prin intermediul chrome: // flags
pagină. Motivul este:
"Implementarea actuală a poziției lipicioasă în Blink nu se integrează corect cu compunerea sau derularea. În cele din urmă, dorim să implementăm o poziție lipicioasă, dar implementarea actuală devine un mod de lucru pentru a îmbunătăți derularea și compoziția. Odată ce defilarea și compoziția sunt în formă mai bună, putem reintroduce poziția lipicioasă într-un mod care se integrează corect cu restul sistemului.
Odată ce alternativa este de a aplica a polyfill pentru a simula efectul în browserele non-suport.
Pentru a ajuta la browserele ne-suport, vom folosi stickyfill dezvoltat de Oleg Korsunsky. Polifilul funcționează frumos în diferite circumstanțe. Indiferent dacă elementul desemnat are zăbrele, margini, margini, a fost plutit sau format cu unități relative cum ar fi em
și procent, poliflul va imita cu precizie CSS lipicios
poziția comportamentului. Și folosirea stickyfill este la fel de intuitivă.
Pentru a începe, apucați stickyfill.js (opțional cu jQuery, dacă sunteți mai familiarizat și preferați să utilizați jQuery pentru selectarea elementelor). Conectați aceste biblioteci în documentul dvs. HTML. Apoi inițiați stickyfill cu elementul desemnat, după cum urmează:
var lateral = document.getElementById ("lateral"); Stickyfill.add (bara laterală);
Dacă utilizați jQuery, puteți scrie următoarele:
. $ ( '# Bara laterală') Stickyfill ();
Acum, bara noastră laterală lipitoare ar trebui să funcționeze între browsere, inclusiv Chrome și Opera. Polyfill-ul este suficient de inteligent încât să ruleze numai în browsere care nu sunt compatibile, în caz contrar acesta va fi complet dezactivat, înlăturându-se pentru implementarea nativă a browserului.
Există câteva alte lucruri pe care trebuie să le notați înainte să luați plonjorul și să îl utilizați lipicios
poziție pe site-urile dvs.:
afișare: tabel;
. Acesta este un bug.Poziția CSS lipicios ar putea fi un instrument strălucit dacă aveți nevoie pur și simplu de un element simplu lipicios. Dacă nevoia ta crește dincolo de faptul că, deși vrei să adaugi niște efecte fantastice asupra elementului lipicios, vei fi mai bine să optezi pentru o bibliotecă JavaScript ca Waypoints.js cu modulul său lipicios.
Cu toate acestea, sperăm să vedem câteva îmbunătățiri majore pentru CSS, atât în ceea ce privește capacitatea, cât și suportul pentru browser, foarte curând.
Am creat un ghid complet care să vă ajute să învățați CSS, indiferent dacă începeți doar cu elementele de bază sau doriți să explorați CSS mai avansat.