Come ho spiegato in un commento, il rotolo non è effettivamente cambiando. Lo scroll della finestra si basa su "distance from top" (DfT). Vale a dire che se non hai una barra di scorrimento, sei DfT è 0. Una volta che le barre di scorrimento sono state introdotte, ora hai una distanza con cui lavorare.
Poiché il contenuto si allunga, il viewport è alto solo di alcuni pixel, alcuni contenuti "cadono" dalla parte inferiore della pagina (anteporre il DfT all'altezza del nuovo elemento).
Il modo migliore a cui posso pensare è quello di contrastarlo con l'altezza del nuovo elemento. Ciò consente di scorrere fino a una posizione, quindi, quando vengono aggiunti nuovi elementi, si modifica la posizione di scorrimento di conseguenza.
Ecco un esempio di ciò che intendo: http://jsfiddle.net/bradchristie/66RvC/1/
E il codice (per riferimento):
var f = function(){
var t = $(window).scrollTop(), // Window's current scroll position
$d = $(d()).prependTo('#main'), // store the new element
h = $d.outerHeight(); // also get its height
if (t){ // Only adjust if they've scrolled
$(window).scrollTop(t + h); // add the delta to the scroll position
}
setTimeout(f, 1000);
};
fonte
2012-10-17 18:24:41
La vista non cambia; la pagina si allunga in modo che la distanza di scorrimento dall'alto sia statica mentre la lunghezza intera della pagina diventa dinamicamente più grande (quindi gli elementi in basso vanno oltre il viewport). Stai cercando di farlo in modo che se scorri fino alla fine della pagina l'ultimo elemento rimanga in vista invece di "cadere"? –
@BradChristie Fondamentalmente voglio 'ciò che è visibile' [ad eccezione della barra di scorrimento, che ovviamente dovrebbe cambiare] per non cambiare affatto a prescindere dalle prepazioni. – Prasanth