Probeer elke scrollIntoView-optie in een live vak, los koppen op die onder een sticky header verdwijnen met scroll-margin-top, en kopieer smooth scroll-code in JavaScript en gewone CSS.
Roep element.scrollIntoView({ behavior: 'smooth', block: 'start' }) aan om een element in beeld te brengen. block bepaalt waar het verticaal terechtkomt: start, center, end of nearest. Als een sticky header het doel bedekt, geef het doel dan in CSS een scroll-margin-top gelijk aan de hoogte van de header, in plaats van offsets in JavaScript te berekenen.
Opties van scrollIntoView
Er zijn drie manieren om de pagina naar een element te verplaatsen: scrollIntoView op het element, scrollTo met een pixelpositie, en een gewone link naar een id. De speeltuin laat zien wat elke block-waarde doet en hoe scroll-margin-top een kop vrijhoudt van een vaste balk, en de voorbeelden daarna behandelen de code die u nodig hebt voor menu's, formulierfouten en lijsten in chatstijl.
Voeg scroll-margin-top toe aan het doel, bijvoorbeeld h2 { scroll-margin-top: 80px }. De CSS scroll snap-specificatie vraagt browsers die marge te respecteren voor scrollIntoView en voor links naar #ids, ook als er geen snapping wordt gebruikt.
Geef behavior: 'smooth' mee aan scrollIntoView of scrollTo, of stel scroll-behavior: smooth in op het html-element zodat elke scroll vanuit code en elke link binnen de pagina wordt geanimeerd. scroll-behavior heeft geen effect op scrollen dat de gebruiker zelf doet met een muiswiel of touch.
scrollIntoView werkt vanuit een element en berekent de positie voor u. window.scrollTo({ top, behavior }) gaat naar een exacte pixelpositie, en scrollBy verplaatst met een relatieve afstand. Gebruik scrollTo als u al een getal hebt, bijvoorbeeld om terug te keren naar een opgeslagen positie.
window.scrollTo({ top: 0, behavior: 'smooth' }). Roep voor een scrollbaar paneel dezelfde methode aan op het paneelelement in plaats van op window.
Veelvoorkomende oorzaken zijn het aanroepen voordat het element bestaat (voer het uit na het renderen, bijvoorbeeld in een React-effect), een element met display: none, of de optie nearest bij een element dat al volledig zichtbaar is.
Zoekt het element op via id en brengt de bovenrand naar de bovenkant van het beeld.
Eén regel lost de overlap op voor scrolls vanuit code en voor links die eindigen op #id. De media query slaat de animatie over voor mensen die liever minder beweging zien.
center houdt het veld en het label in het midden van het scherm; focus brengt toetsenbordgebruikers er ook naartoe.
Gebruikt de positie van het item binnen het paneel, zodat de pagina eromheen niet beweegt.
De ref wijst naar de DOM-node zodra die is gerenderd, dus de aanroep gebeurt in een klikhandler of een effect.
scrollIntoView-speeltuin
Dit vak heeft een eigen sticky balk. Kies een rij en opties en scrol. Het vak past dezelfde uitlijningsberekening toe met scrollTo, zodat de rest van de pagina stil blijft staan.
Doelrij: {n}
scroll-margin-top: {n}px
Scrollen
Terug naar bovenkant van het vak
Sticky balk, 40px hoog
Rij {n}
Demo-scrollvak
Code voor uw pagina
Gratis beginnen · Geen creditcard nodig