Wie Sie in der DevTools-Timeline-Ansicht sehen können, gibt es viele rote Markierungen oben. Dies deutet auf langsame Frames hin. Wenn Sie sich Screenshots ansehen, können Sie leicht erkennen, dass scroll selbst etwas Unangenehmes an sich hat.
Blick ein wenig tiefer - es gibt 2 mit scroll
Ereignis ausgelöst Funktionen:
- Die erste, Function Call von polyfill.js, die Delegierten der Funktionsausführung zu request (was gut ist)
- Der zweite, Function Call to jQuery, der die Funktion sofort ausführt.
Was Sie tun können, Ihre Scroll-perf delegiert Funktion 2-requestAnimationFrame
zu verbessern. In einer einfachsten Form können Sie mit so etwas gehen:
Die andere Sache ist Variablen Caching. Die Funktion, die Kopfzeilenposition berechnet, durchläuft DOM bei jedem Aufruf. Da DOM-Operationen ziemlich teuer sind, ist es besser, sie zu vermeiden, wenn sie nicht notwendig sind.
var $header = $('.header'); // traverse DOM once, cache variable for later use in function
function someFunctionUpdatingDOM() {
$header.addClass('something');
}
Eine weitere Sache, ich habe bemerkt - es gibt zu blättern perf Probleme auf Desktop-Ansicht, die durch umfangreiche repaints des Hintergrundbildes. Dies wird durch ein Skript verursacht, das background-position
ändert, um Parallaxeneffekt zu erzielen. Es ist im Allgemeinen besser, CSS-Transformationen wie translate3d()
zu verwenden, die hardwarebeschleunigt sind. Auf diese Weise können Browser Schicht- (Bild-) Transformationen auf die GPU einplanen, unnötige Repaints auslassen und die Seite reibungslos durchlaufen lassen.
Viel Glück mit den Korrekturen!
Überprüfen Sie Ihre Konsolenfehler. 'Uncaught TypeError: $ ist keine Funktion'. Ihre Website wird für mich auf dem Chrome-Desktop nicht geladen. – s0rfi949
Ich kann keine Fehler auf der Konsole in Chrome sehen .. – wander
Ahh, ich habe meine Adblock-Erweiterung deaktiviert und jetzt wird die Website geladen ... – s0rfi949