Stikkelementer, når brukeren ruller til et bestemt punkt, har blitt et vanlig mønster i moderne webdesign. Du får se det brukes til toppnavigasjon, sidebjelken, dele koblinger eller kanskje annonser. beholder synlighet i visningsporten mens brukeren ruller.
Historisk har vi trengte JavaScript for å gjøre dette. Imidlertid er klistret oppførsel foreslått (og utarbeidet) som en ny standard (the klissete
posisjon), slik at vi kan oppnå effekten med ren CSS. La oss se på hvordan det fungerer!
klissete
er en ny verdi for stilling
eiendom, lagt til som en del av CSS3 Layout Module Spec. Det fungerer på samme måte som slektning
posisjonering, fordi den ikke fjerner noe fra dokumentflyten. Med andre ord har et klebrig element ingen effekt på plasseringen av tilstøtende elementer og kollapser ikke dets foreldreelement.
Gitt følgende eksempel, satte vi inn #sidebar
posisjon til klissete
sammen med topp: 10px
. Den høyeste verdien er nødvendig, og angir avstanden fra toppkanten av visningsporten der elementet vil pinne.
#sidebar posisjon: -webkit-klebrig; // kreves for Safari-stilling: klebrig topp: 0; // nødvendig også.
Nå, når vi ruller på siden, når sidebjelkens avstand fra toppen av visningsporten når 0
, Sidebjørnet skal holde fast, og gir oss en fast
stilling. Med andre ord, klissete
er litt av en hybrid mellom slektning
og fast
stilling.
I tillegg er det klissete
posisjonen vil fungere innenfor en rulleboks eller et overfylt element. Denne gangen setter vi inn topp
til 15px
å gi litt mer plass over sidelinjen når den er stickily posisjonert (ja det er et ord).
Sidebjelken vil forbli klissete langs hele foreldrenes høyde (dvs. når bunnen av foreldrene når bunnen av sidefeltet, vil den "skyve" den av siden en gang til.)
Lett, er det ikke?
Hvis du ser på disse demoene i Chrome, Opera eller Internet Explorer (og Blink), har du nå forstått at de ikke fungerer. Disse nettleserne støtter ennå ikke klissete
verdi.
I Chrome 28, da det ble byttet til Blink-motor, bestemte Chrome seg for å fjerne klissete
posisjon fra kodebase, og det fjernet til og med muligheten for å aktivere den gjennom chrome: // flags
side. Årsaken er:
"Den nåværende implementeringen av stillingen klebrig i Blink integreres ikke korrekt med komposisjon eller rulling. Vi ønsker til slutt å implementere stillingen klebrig, men den nåværende implementeringen gjør jobben for å forbedre rullingen og sammensetningen. Når rulling og sammensetning er i bedre form, kan vi re-introdusere stillingen klebrig på en måte som integreres riktig med resten av systemet.
Når alternativet er å søke a polyfill å simulere effekten i ikke-støttende nettlesere.
For å hjelpe våre ikke-støttende nettlesere skal vi bruke stikkfeil utviklet av Oleg Korsunsky. Polyfill fungerer fint under ulike forhold. Om det utpekte elementet har polstring, marginer, grenser, blitt flatt eller dannet med relative enheter som em
og prosentvis vil polyfillet nøyaktig etterligne CSS klissete
stillingsadferd. Og bruk av stikkfeil er like intuitiv.
For å begynne, ta tak i stickyfill.js (valgfritt med jQuery, hvis du er mer kjent med og foretrekker å bruke jQuery for å velge elementer). Koble disse bibliotekene i HTML-dokumentet ditt. Deretter initierer stikkfugl med det utpekte elementet, som følger:
var sidebar = document.getElementById ('sidebar'); Stickyfill.add (sidefelt);
Hvis du bruker jQuery, kan du skrive følgende i stedet:
. $ ( '# Sidebar') Stickyfill ();
Nå skal vår klissete sidebar fungere på tvers av nettlesere, inkludert Chrome og Opera. Polyfileten er smart nok til at den bare vil kjøre i ikke-støttende nettlesere, ellers vil den bli helt deaktivert, og legge til side for nettleserens opprinnelige implementering.
Det er et par andre ting å merke seg før du tar sjansen og bruker klissete
posisjon på nettstedene dine:
skjerm: bord;
. Dette er en feil.CSS klebrig posisjon kan være et glimrende verktøy hvis du bare trenger et vanlig klistrende element. Hvis behovet ditt vokser utover det skjønt, si at du vil legge til noen fancy effekter på det klissete elementet, vil du fortsatt være bedre å velge et JavaScript-bibliotek som Waypoints.js med sin klebrig modul.
Ikke desto mindre håper vi å se noen store forbedringer på CSS klebrig, med hensyn til dens evne, samt nettleserstøtte, veldig snart.
Vi har bygget en komplett guide for å hjelpe deg med å lære CSS, enten du er bare i gang med det grunnleggende eller du vil utforske mer avansert CSS.