Immer noch auf bessere native Seitenübergänge hoffend

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Es wäre schön, den Übergang zwischen Seiten animieren zu können, wenn wir das im Web wollen, ohne auf Hacks oder umfangreiche Architekturentscheidungen zurückgreifen zu müssen, um dies zu erreichen. Ich könnte mir eine API vorstellen, die etwas ausführt, vielleicht integriert mit WAAPI, bevor die Seite entladen wird, und andere Dinge, nachdem die nächste Seite geladen wurde. Dies, mit ansonsten normalen alten Ankerlinks und Seitenaufrufen.

Wir haben zwar eine onbeforeunload API, aber ich bin mir nicht sicher, welche Nachteile diese hat. Technisch gesehen können wir jetzt Seitenübergänge erstellen, auch ohne Single-Page-App-Architektur, aber was ich will, sind **speziell dafür entwickelte APIs**, die uns helfen, dies sauber (verständliche Funktionen) und mit Blick auf Leistung (so schnell wie normale Linkklicks) und Zugänglichkeit (wie Fokusbehandlung) zu tun.

Wenn Sie ohnehin eine Single-Page-App erstellen, haben Sie die Freiheit, zwischen Ansichten zu animieren, da die Seite nie neu geladen wird. Die Gefahr dabei ist, dass Sie eine Single-Page-App *nur* für diese Möglichkeit wählen könnten, was ich damit meine, dass man sich auf eine Website-Architektur einlassen muss, um dies zu erreichen. Das fühlt sich wie ein unglücklicher Kompromiss an, da Single-Page-Apps eine Menge Overhead mit sich bringen, wie Werkzeuge und Zugänglichkeitsbedenken, die man sonst nicht benötigt hätte.

Ohne eine Single-Page-App könnten Sie etwas wie Turbo und animate.css wie dies verwenden. Oder Adams neue transition.style, eine auf clip-path() basierende Hommage an Daniel Edans Meisterwerk. Vielleicht wäre dieser Ansatz in Kombination mit instant.page so schnell wie jeder andere interne Linkklick.

Es gibt andere Akteure, die versuchen, dies zu lösen, wie smoothState.js und Swup. Der Trick dabei ist: Unterbrechen Sie die Aktion zum Wechseln zur nächsten Seite, führen Sie zuerst die Animation aus, laden Sie dann die nächste Seite und animieren Sie die neue Seite ein. Technisch gesehen verlangsamt dies die Sache ein wenig, aber Sie können es ziemlich effizient machen und die Bewegung lenkt genug ab, dass die wahrgenommene Leistung sogar besser sein könnte.

Idealerweise müssten wir nicht die gesamte Seite animieren, aber wir könnten die volle Kontrolle haben, um interessantere Übergänge zu gestalten. Verdammt, ich habe das vor einem Jahrzehnt mit einer Seite für einen Musiker gemacht, wo beim Herumklicken auf der Seite die Dinge einfach verschoben wurden, damit die Musik weiterspielt (und es machte Spaß).

Dies wäre ein großartiger Ort für die Webplattform, um einzugreifen. Ich erinnere mich, dass Jake sich dafür eingesetzt hat vor Jahren, aber ich bin mir nicht sicher, ob das irgendwohin geführt hat. Dann bekamen wir Portals, die... okay sind? Das ist so, als würde man ein iframe auf der Seite laden und es dann animieren, die ganze Seite zu übernehmen (und die URL zu aktualisieren). Viel Animationsnuance ist dort nicht möglich, aber man könnte sicherlich ein paar Seiten herumwischen oder sie ein- und ausblenden (hier ist noch eine: Highway), wie es jQuery Mobile vor Urzeiten getan hat.