En introduktion til CSS Scroll Snap Points
Det CSS Scroll Snap Module er en webstandard, der giver os kontrol over ruller på en webside så vi kan få brugere til at rulle til bestemte dele af en side i stedet for bare hvor som helst på den.
rulning er en af de mest udførte handlinger på en hjemmeside. Browsere har gennem årene haft forbedret deres rullende ydeevne for at matche brugerens smidige fingerstyrke. Og udviklere har brugt scrolling kreativt for at opnå en bedre eller en out-of-the-box brugeroplevelse.
Men når det kommer til sammenhængen mellem kodning og scrolling, Kun JavaScript syntes at have nogen kontrol over sidstnævnte. Dette var så i lang tid, men med introduktion af rulle snap punkter, CSS begyndte at indhente.
Scrolling uden scroll snap point
Typisk ruller vi ikke meget langsomt, især på telefoner. Jo hurtigere du ruller, jo mindre kontrol har du over hvor på skærmen kommer du til ende da du stoppede med at rulle.
Forestil dig, at du ruller gennem en vifte af produktbilleder på et websted, eller et galleri med fotos eller online dias. Hvad du foretrækker i sådanne applikationer er at se hele produkt, foto eller dias hver gang du ruller. Ikke kun a en del af produktbilledet, billedet eller diaset.
For eksempel kan du i demoen nedenfor se, når brugeren holder op med at rulle, kun omkring halvdelen af billedet er synligt nederst på skærmen. Men de fleste brugere foretrækker at se det sidste billede fuldt ud.
Scrolling med scroll snap punkter
Det er her, vi tager med CSS rulle snap punkter. Navnet er selvforklarende; det er en CSS standard, der tillader os at snap elementer på plads når du ruller.
Der er fem CSS egenskaber der udgør denne standard:
rulle-snap-typen
rulle til-snap-points-x
rulle til-snap-point-y
rulle-snap-koordinat
rul-snap-destination
Browser support
Egenskaberne brug for -webKit
og -Frk
præfikser for de relevante browsere. Når du skriver denne artikel, understøttes CSS scroll snap ikke i Chrome og Opera.
Bemærk, at de sidste fire egenskaber sandsynligvis vil blive droppet af brugeragenter i den nærmeste fremtid. I stedet, nye ejendomme, nemlig rul-snap-align
, rul-snap-margin
, og rul-snap-polstring
, kan oprettes, som defineret i denne beskrivelse.
Men de vil har et lignende formål som de tidligere egenskaber. I øjeblikket vil det tidligere sæt af egenskaber fungere fint.
Ejendomme
Du skal tilføj rulle-snap-typen
ejendom til rullebeholderen (beholderelementet, hvis børn er overfyldte, mens det rulles). Det specificerer strenghed af snap action. Det kan tage tre værdier:
obligatorisk
- Når rullingen er færdig, vil rullingen klik på et relevant snap pointnærhed
- mindre strenge endobligatorisk
; det vil afhænger af dommen af UA om elementet vil snappe på et givet snap pointingen
- ingen snapping er færdig
Det rulle til-snap-points-x
og rulle til-snap-point-y
ejendomme tilhører rullebeholderen, også. De henviser til punkter på x- og y-aksen, hvor snap-punkterne vil eksistere. Deres værdi er givet af gentage()
fungere. For eksempel, hvis du vil tilføje snap-punkter langs x-aksen i intervallet af 100px
du skal bruge scroll-snap-points-x: gentag (100px)
Herske.
Det rul-snap-destination
Egenskaben tilføjes også til rullebeholderen. Det definerer en koordinat på beholderen hvor en snap destination ligger. Det er på denne snap destination hvor beholderens børn vil snappe på plads, når de rulles.
Du kan bruge rulle-snap-koordinat
ejendom i forbindelse med rul-snap-destination
. Du skal føje det til beholderens barnelementer. Det definerer koordinaterne for barnelementer, som vil tilpasse sig deres destinationsblanket til deres rullebeholder, når brugeren ruller skærmen.
Bemærk, at du ikke behøver at bruge alle egenskaber på én gang. Kun rulle-snap-typen
er obligatorisk. Sammen med det kan du enten definere individuelle snappunkter eller bruge destinationskoordinatkombinationen.
Kodeeksempel
Her er et eksempel kodestykke for a typisk rullebeholder, med ruller i lodret retning og nogle billeder inde. Den udsender den demo, du kan finde i begyndelsen af dette indlæg.
div bredde: 300px; højde: 300px; overløb: auto; ... div> img bredde: 250px; højde: 150px; ...
Nu, vi Tilføj nogle snap point til rullebeholderen:
div bredde: 300px; overløb: auto; scroll-snap-points-y: gentag (150px); scroll-snap-type: obligatorisk;
Nedenfor kan du se, hvordan produktionen ser ud med CSS snap point tilføjet. Bemærk, når rullingen stopper, mens bundbilledet kun er delvist synligt, vil hele billedet vises efter at rulleporten klikker ind i et snappunkt over det.