Lesen der AngularJS-Dokumente Ich habe nicht herausgefunden, ob $anchorScroll
es eine Dauer- / Beschleunigungsoption zum reibungslosen Scrollen zu Elementen geben kann.
Es heißt nur:
$location.hash('bottom');
// call $anchorScroll()
$anchorScroll();
Ich benutze keine Abfrage und möchte nicht; Gibt es noch eine clevere und dennoch einfache Möglichkeit zum Erstellen oder Erweitern $anchorScroll
, um das Scrollen reibungsloser zu gestalten?
quelle
<a anchor-smooth-scroll>About 1</a> <a anchor-smooth-scroll>About 2</a>
<div id="my-div">my div</div>
) und erstellen Sie dann einen Link wie folgt :<a anchor-smooth-scroll="my-div">visit my div</a>
.Sie können auch die Winkelrolle verwenden, Link " https://github.com/durated/angular-scroll/ ". Es ist sanftes Scrollen sowie einige Beschleunigungsfunktionen, um ein professionelles Aussehen zu erhalten.
quelle
Die Antwort von Brett hat für mich großartig funktioniert. Ich habe einige kleine Änderungen an seiner Lösung in Bezug auf Modularisierung und Testbarkeit vorgenommen.
Hier ist ein weiteres Arbeitsbeispiel für JsFiddle , das die andere Version mit Tests enthält.
Zum Testen benutze ich Karma und Jasmine. Die Signatur wurde wie folgt leicht geändert:
Wobei Element ein obligatorisches Attribut ist, zu dem gescrollt werden soll, und Geschwindigkeit optional ist, wobei der Standardwert 20 ist (wie zuvor).
quelle
Sie können auch ngSmoothScroll verwenden, Link: https://github.com/d-oliveros/ngSmoothScroll .
Fügen Sie das
smoothScroll
Modul einfach als Abhängigkeit hinzu und verwenden Sie es wie folgt:<a href="#" scroll-to="my-element-3">Click me!</a>
quelle
Keine der Lösungen hier macht tatsächlich das, was OP ursprünglich verlangt hatte,
$anchorScroll
dh macht das Scrollen reibungslos. Der Unterschied zwischen Anweisungen zum reibungslosen Scrollen$anchroScroll
besteht darin, dass sie verwendet / geändert werden$location.hash()
, was in einigen Fällen wünschenswert sein kann.Hier ist das Wesentliche für ein einfaches Modul, das das Scrollen von $ anchorScroll durch ein reibungsloses Scrollen ersetzt. Es verwendet die Bibliothek https://github.com/oblador/angular-scroll für das Scrollen selbst (ersetzen Sie es durch etwas anderes, wenn Sie möchten, es sollte einfach sein).
https://gist.github.com/mdvorak/fc8b531d3e082f3fdaa9
Hinweis: $ anchorScroll kann nicht reibungslos gescrollt werden, ersetzt jedoch den Handler zum Scrollen.
Aktivieren Sie es einfach, indem Sie auf das
mdvorakSmoothScroll
Modul in Ihrer Anwendung verweisen .quelle
Alan, danke. Wenn jemand interessiert ist, habe ich es basierend auf John Pappa Standards formatiert.
quelle
Ich weiß nicht, wie ich animieren soll
$anchorScroll
. So mache ich das in meinen Projekten:Und die JS-Funktion:
quelle