Ich versuche jedes Mal, wenn der Benutzer sich dem oberen Rand des Dokuments nähert, um 100 Pixel nach unten zu scrollen.
Ich habe die Funktion ausgeführt, wenn der Benutzer sich dem oberen Rand des Dokuments nähert, aber die .scrollTo-Funktion funktioniert nicht.
Ich habe nach und vor eine Warnung eingefügt, um zu überprüfen, ob tatsächlich die Leitung sie gestoppt hat oder nicht, und nur die erste Warnung wird ausgelöst. Hier ist der Code:
alert("starting");
$.scrollTo({ top: '+=100px', left: '+=0px' }, 800);
alert("finished");
Ich weiß, dass ich die JQuery-Seite richtig verlinkt habe, weil ich viele andere JQuery-Funktionen verwende und sie alle gut funktionieren. Ich habe auch versucht, das 'px' von oben zu entfernen, und es scheint keinen Unterschied zu machen.
Antworten:
Wenn es nicht funktioniert, warum versuchen Sie es nicht mit der scrollTop-Methode von jQuery?
Wenn Sie reibungslos scrollen möchten, können Sie die grundlegende Javascript-Funktion setTimeout / setInterval verwenden, um einen Bildlauf in Schritten von 1 Pixel über einen festgelegten Zeitraum durchzuführen.
quelle
quelle
html, body
statt nur html?body
, dass dies in Chrome 4 nicht enthalten ist: stackoverflow.com/questions/1890995/…scrollTop: 0
funktioniert auch gut. Aber die Dauer sinkt. Funktioniert gut, wenn 1000 in Geschwindigkeit eingestellt istjQuery unterstützt jetzt scrollTop als Animationsvariable.
Sie müssen setTimeout / setInterval nicht mehr einstellen, um reibungslos zu scrollen.
quelle
$("#id").offset().top
stattdessen sein?Um das
html
vs-body
Problem zu umgehen , habe ich dies behoben, indem ich das CSS nicht direkt animierte, sondernwindow.scrollTo();
jeden Schritt aufrief :Dies funktioniert gut ohne Aktualisierungsprobleme, da es browserübergreifendes JavaScript verwendet.
Werfen Sie einen Blick auf http://james.padolsey.com/javascript/fun-with-jquerys-animate/ für weitere Informationen darüber , was Sie mit jQuery animieren Funktion tun können.
quelle
window.pageYOffset
zu$(window).scrollTop()
undwindow.scrollTo(0, val)
zu gewechselt ,$(window).scrollTop(val)
damit ich mir keine Sorgen um die Browserkompatibilität machen muss.Sieht so aus, als hätten Sie eine etwas falsche Syntax ... Ich gehe davon aus, dass Sie basierend auf Ihrem Code versuchen, 100px in 800 ms nach unten zu scrollen. Wenn ja, funktioniert dies (mit scrollTo 1.4.1):
quelle
Eigentlich so etwas wie
funktioniert gut und unterstützt die Polsterung. Sie können Ränder auch problemlos unterstützen - zur Vervollständigung siehe unten
quelle