2012-04-12 15 views
2

wie gesagt, ich habe ein Problem mit der Flüssigkeit meiner Seite und ich denke, Jquery ist in irgendeiner Weise beteiligt.jQuery Animation nicht flüssig

Ich habe die folgende One-Page-Site erstellt.

http://cgeese.de/tests/Test02/

Ich benutze jQuery mit dem js Plugins

Problem

Durch Klicken auf einen Link wird die Seite mit einer Bounce-Leichtigkeit zum Ziel-Div (die von easing.js bereitgestellt wird) gescrollt. Es funktioniert technisch gut, aber es ist nicht glatt genug für meinen Geschmack.

Ich denke, das Problem mit dem Stottern in der Lockerung ist, dass ich eines dieser Plugins missbrauche, aber ich kann nicht scheinen, einen Fehler im Code zu finden.

Fragen

WARUM die Animation Stottern ist und wie kann ich sie glatter zu machen?

Aktualisieren Irgendwelche Hinweise überhaupt? Scheint so, als würde die Verwendung der jQuery-build-in-Beschleunigung etwas besser aussehen, hat aber das gleiche Problem. Ich denke, es ist nicht das Easing-Plugin, das Ariel Feslers stört. Gibt es ein Plugin wie dieses?

Antwort

4

Es scheint ziemlich flüssig auf Chrom. Das Ändern der Beschleunigungsart ändert nicht viel ...

Ihre Navigation ist Position: behoben, was ein Repaint/Reflow der gesamten Seite für jeden Navigationsschlüsselrahmen verursacht. Sie können dies mit Chrom Kanarienvogel oder mit diesem Trick visualisieren: http://paulirish.com/2011/viewing-chromes-paint-cycle/

Animieren der Rolle löst auch ein Repaint. Entfernen Sie auch so viele CSS3 Schatten und Farbverläufe, wie Sie können, sie sind ziemlich schwer für den Browser zu animieren.

Ich denke, es gibt ein Plugin für Firefox zu.

Sie könnten diese meine optimieren Einstellung es position: absolute, und Ihre Inhalte innerhalb eines div platzieren, die Überlauf versteckt ... (eine Art von gefälschten Körper)

Hier ist ein ausgezeichneter Artikel über sie: http://www.stubbornella.org/content/2009/03/27/reflows-repaints-css-performance-making-your-javascript-slow/

Die andere Sache, die Sie tun könnten, ist nicht die Rolle, sondern die Elemente selbst zu animieren, sie in ein absolut positioniertes Element zu platzieren und dieses Element zu animieren.

Einige allgemeine Richtlinien über repaints/Rückfluesse: https://developers.google.com/speed/articles/reflow

+0

Wow, super! Geschafft. Vielen Dank! –

+0

Ich hatte Probleme, zu versuchen, was Sie vorschlugen, aber das CSS3-Material zu reduzieren half sehr.Das Animieren der Elemente anstelle des Scrollens ist etwas, das ich in einem anderen Testprojekt gemacht habe, und es funktioniert gut, aber ich hatte nicht so viele CSS3-Schatten darin, so dass es schwer ist, die Methoden jetzt zu vergleichen. Ich werde es aber irgendwann tun. Danke nochmal für deine Hilfe! –

+0

Ich habe jetzt eine zweite Version gemacht, wo das Fenster nicht scrollt, aber die ganze Seite sich "unter" bewegt. Während es den gleichen Effekt hat, ist seine Leistung noch schlechter. Aber, wie oben erwähnt, macht die Verwendung weniger CSS3-Effekte den Trick. Außerdem werde ich versuchen, wenn aus irgendeinem Grund die "Position" von jquery UI besser funktioniert. –