Antworten:
Wie @ 9bits hervorhob, wird dies seit langem von allen gängigen Browsern unterstützt . Mach dir darüber keine Sorgen. Das Hauptproblem ist die Art und Weise, wie es funktioniert. Es springt einfach zu einem bestimmten Element, das sich auch am Ende der Seite befinden kann. Durch das Springen haben Benutzer keine Ahnung, ob:
Die ersten beiden können durch die Bildlaufposition bestimmt werden, aber wer sagt, dass Benutzer die Bildlaufposition verfolgt haben, bevor der Sprung ausgeführt wurde? Es ist also eine nicht deterministische Handlung.
Die letzte kann zutreffen, insbesondere wenn die Seite einen beweglichen Header hat, der aus der Ansicht gescrollt wird, und das verbleibende Seitendesign nichts bedeutet, dass sie sich auf derselben Seite befindet (wenn sie auch kein vertikales Element mit Gesamthöhe wie das linke Menü enthält Bar). Sie wären überrascht, wie viele Seiten dieses Problem haben. Schau sie dir einfach selbst an. Gehen Sie zu einer Seite, sehen Sie sie sich oben an, drücken Sie die EndTaste und sehen Sie sie sich noch einmal an. Es ist wahrscheinlich, dass Sie denken, dass es sich um eine andere Seite handelt.
scrollintoview
jQuery-Plugin zur RettungAus diesem Grund gibt es immer noch Plugins, die einen Bildlauf in die Ansicht durchführen, anstatt die native DOM-Funktion zu verwenden. Sie animieren normalerweise das Scrollen, wodurch alle drei oben beschriebenen Probleme beseitigt werden. Benutzer können die Bewegung leicht verfolgen.
ScrollIntoViewOptions
ermöglicht die Angabe behavior: 'smooth'
. Leider kann man nicht leicht erkennen, ob diese Option in einem Browser unterstützt wird…
behavior: "smooth"
, aber nicht Chrome oder Safari.
Sieht so aus: http://www.quirksmode.org/dom/w3c_cssom.html
Ich benutze Matteo Spinnellis iScroll-4 und er funktioniert auch in iOS-Safari. Es gibt drei Methoden: scrollTo, scrollToElement und scrollToPage. Angenommen, Sie haben eine ungeordnete Liste von Elementen in einem div. Wie Robert Koritnik oben geschrieben hat, benötigen Sie diese leichte Animation, um zu zeigen, dass Sie gescrollt haben. Die folgende Methode erzielt diesen Effekt.
scrollToElement(element, time);
Habe dies nicht ausprobiert, aber es scheint, als würde ein Huckepack auf der eingebauten scrollIntoView-Funktion viel Code sparen. Folgendes würde ich tun, wenn Sie animierte Aktionen wünschen: