Wie scrolle ich mit jquery bis zum Ende eines Iframes oder einer Seite?
224
Wenn Sie eine schöne langsame Animation scrollen möchten, werden Sie für jeden Anker mit href="#bottom"
diesem nach unten scrollen:
$("a[href='#bottom']").click(function() {
$("html, body").animate({ scrollTop: $(document).height() }, "slow");
return false;
});
Sie können den Wahlschalter jederzeit ändern.
scrollTop () gibt die Anzahl der Pixel zurück, die im scrollbaren Bereich nicht sichtbar sind. Geben Sie also Folgendes an:
überschreitet tatsächlich den unteren Rand der Seite. Damit der Bildlauf am unteren Rand der Seite tatsächlich stoppt, muss die aktuelle Höhe des Browserfensters subtrahiert werden. Dies ermöglicht die Verwendung von Lockerung, falls erforderlich, so dass:
quelle
easeOutQuint
erfordert ein Plugin, jQuery selbst hat nurlinear
undswing
.<!DOCTYPE html>
in Chrome nicht angeben, gibt Chrome genau den gleichen Wert für die Fenster- und Dokumenthöhe zurück. In diesem Fall$(document).height()-$(window).height()
wird immer 0 zurückgegeben. Siehe hier: stackoverflow.com/questions/12103208/…Beispielsweise:
quelle
Nachdem dieser Thread für mich aufgrund meiner spezifischen Anforderungen (Scrollen innerhalb eines bestimmten Elements, in meinem Fall eines Textbereichs) nicht funktioniert hat, habe ich dies im Jenseits herausgefunden, was sich für andere, die diese Diskussion lesen, als hilfreich erweisen könnte:
Alternative auf planetcloud
Da ich bereits eine zwischengespeicherte Version meines jQuery-Objekts hatte (der folgende
myPanel
Code ist das jQuery-Objekt), war der Code, den ich meinem Ereignishandler hinzugefügt habe, einfach folgender:(danke Ben)
quelle
var d = $('#mydiv'); d.scrollTop (d[0].scrollHeight - d.height ());
Eine einfache Funktion, die zum Ende der gesamten Seite springt (sofort einen Bildlauf durchführt). Es verwendet die eingebaute
.scrollTop()
. Ich habe nicht versucht, dies an einzelne Seitenelemente anzupassen.quelle
$(document).scrollTop($(document).height());
Dieser hat für mich gearbeitet:
quelle
Wenn Sie sich nicht für Animation interessieren, müssen Sie nicht die Höhe des Elements ermitteln. Zumindest in allen Browsern, die ich ausprobiert habe
scrollTop
, wird nur nach unten gescrollt, wenn Sie eine Zahl angeben, die größer als das Maximum ist. Geben Sie also die größtmögliche Anzahl an:Wenn Sie die Seite anstelle eines Elements mit einer Bildlaufleiste scrollen möchten, setzen Sie einfach
myScrollingElement
'body, html' gleich.Da ich dies an mehreren Stellen tun muss, habe ich eine schnelle und schmutzige jQuery-Funktion geschrieben, um es bequemer zu machen, wie folgt:
Also kann ich das tun, wenn ich ein paar Sachen anhänge:
quelle
Die in früheren Antworten erwähnten Skripte wie:
oder
$(window).scrollTop($(document).height());
funktioniert nicht in Chrome und ist in Safari nervös, falls für das
html
Tag in CSS dieoverflow: auto;
Eigenschaft festgelegt wurde. Ich brauchte fast eine Stunde, um es herauszufinden.quelle
Ich verwende diesen Code, um den Chat zu scrollen, wenn neue Nachrichten eintreffen.
quelle