@FedericoCapaldo Schauen Sie sich das an: stackoverflow.com/questions/8917921/…
– dfq
12. März 2018 um 19:27 Uhr
Eine umfassendere Liste von Methoden für reibungsloses Scrollen finden Sie in meiner Antwort hier.
Um zum Ende der Seite zu scrollen, kann die y-Position auf eingestellt werden document.scrollingElement.scrollHeight.
Um in einer bestimmten Zeit zu einer bestimmten Position zu scrollen, window.requestAnimationFrame verwendet werden, wobei jedes Mal die entsprechende aktuelle Position berechnet wird. setTimeout kann zu einem ähnlichen Effekt verwendet werden, wenn requestAnimationFrame wird nicht unterstützt.
/*
@param pos: the y-position to scroll to (in pixels)
@param time: the exact amount of time the scrolling will take (in milliseconds)
*/
function scrollToSmoothly(pos, time) {
var currentPos = window.pageYOffset;
var start = null;
if(time == null) time = 500;
pos = +pos, time = +time;
window.requestAnimationFrame(function step(currentTime) {
start = !start ? currentTime : start;
var progress = currentTime - start;
if (currentPos < pos) {
window.scrollTo(0, ((pos - currentPos) * progress / time) + currentPos);
} else {
window.scrollTo(0, currentPos - ((currentPos - pos) * progress / time));
}
if (progress < time) {
window.requestAnimationFrame(step);
} else {
window.scrollTo(0, pos);
}
});
}
Der SmoothScroll.js-Bibliothek kann ebenfalls verwendet werden, was komplexere Fälle behandelt, wie z. B. glattes vertikales und horizontales Scrollen, Scrollen innerhalb anderer Containerelemente, unterschiedliche Beschleunigungsverhalten, Scrollen relativ von der aktuellen Position und mehr.
Zum Beispiel: Sie haben eine <button> was ein hinzufügt <div> Element an das Ende der Seite, wenn darauf geklickt wird, und Sie möchten nach unten scrollen, damit der Benutzer dieses neue div sehen kann. In diesem Fall müssen Sie manchmal (abhängig vom Verhalten der Ereignisschleife) innerhalb von a scrollen setTimeout() weil dieselbe Aktion, die das Scrollen auslöst, tatsächlich den Wert von ändert document.body.scrollHeight. Indem Sie es verzögern, verwenden Sie den neuen aktualisierten Wert von document.body.scrollHeight nachdem das div hinzugefügt wurde.
14428600cookie-checkJS für reibungsloses Scrollen zum Ende der Seiteyes