Prova ogni opzione di scrollIntoView in un box dal vivo, sistema i titoli nascosti sotto un header sticky con scroll-margin-top e copia il codice per lo scroll fluido in JavaScript e in CSS puro.
Chiama element.scrollIntoView({ behavior: 'smooth', block: 'start' }) per portare un elemento nella vista. block decide dove si posiziona in verticale: start, center, end o nearest. Se un header sticky copre il target, dai al target uno scroll-margin-top pari all'altezza dell'header in CSS invece di calcolare gli offset in JavaScript.
Opzioni di scrollIntoView
Ci sono tre modi per spostare la pagina fino a un elemento: scrollIntoView sull'elemento, scrollTo con una posizione in pixel, e un semplice link a un id. Il playground mostra cosa fa ogni valore di block e come scroll-margin-top tiene un titolo lontano da una barra fissa, poi gli esempi coprono il codice che ti serve per menu, errori nei moduli e liste in stile chat.
Aggiungi scroll-margin-top al target, per esempio h2 { scroll-margin-top: 80px }. La specifica CSS scroll snap chiede ai browser di rispettare quel margine per scrollIntoView e per i link a #id, anche senza alcuno snap in uso.
Passa behavior: 'smooth' a scrollIntoView o scrollTo, oppure imposta scroll-behavior: smooth sull'elemento html così ogni scroll da codice e ogni link interno alla pagina è animato. scroll-behavior non ha effetto sullo scroll fatto dall'utente con la rotella o il tocco.
scrollIntoView parte da un elemento e calcola la posizione per te. window.scrollTo({ top, behavior }) si sposta a una posizione esatta in pixel, e scrollBy si sposta di una quantità relativa. Usa scrollTo quando hai già un numero, per esempio per tornare a una posizione salvata.
window.scrollTo({ top: 0, behavior: 'smooth' }). Per un pannello scorrevole, chiama lo stesso metodo sull'elemento del pannello invece che su window.
Le cause comuni sono chiamarlo prima che l'elemento esista (eseguilo dopo il rendering, per esempio in un effect di React), l'elemento che ha display: none, oppure l'opzione nearest con un elemento già completamente visibile.
Cerca l'elemento per id e porta il suo bordo superiore in cima alla vista.
Una sola regola risolve la sovrapposizione per gli scroll da script e per i link che finiscono con #id. La media query salta l'animazione per chi preferisce meno movimento.
center tiene il campo e la sua etichetta al centro dello schermo; il focus porta lì anche chi usa la tastiera.
Usa la posizione dell'elemento dentro il pannello, così la pagina attorno non si muove.
Il ref punta al nodo DOM una volta renderizzato, quindi la chiamata avviene in un gestore di clic o in un effect.
Playground di scrollIntoView
Questo box ha la sua barra sticky. Scegli una riga e le opzioni, poi scorri. Il box applica gli stessi calcoli di allineamento con scrollTo, così il resto della pagina resta fermo.
Riga di destinazione: {n}
scroll-margin-top: {n}px
Scorri
Torna in cima al box
Barra sticky, alta 40px
Riga {n}
Box di scroll dimostrativo
Codice per la tua pagina
Inizia gratis · Nessuna carta di credito richiesta