Wie Sarah in ihrem vorherigen Beitrag über Seitenübergänge mit Vue.js erwähnte, gibt es reichlich Motivation für Designer und Entwickler, Seitenübergänge zu erstellen. Betrachten wir mobile Anwendungen. Während mobile Anwendungen sich weiterentwickeln, wird immer mehr Aufmerksamkeit auf die Animationserfahrung gelegt, während das Web weitgehend gleich bleibt. Warum ist das so?
Vielleicht liegt es daran, dass native App-Entwickler mehr Zeit mit diesen Animationen verbringen. Vielleicht liegt es daran, dass Benutzer sagen, dass sie das wollen. Vielleicht liegt es daran, dass sie mehr über die Umgebung wissen, in der die App laufen wird. All das hilft, die Erfahrung im Laufe der Zeit zu verbessern. Insgesamt scheint es, dass mobile App-Entwickler irgendwie mehr über die Benutzererfahrung wissen oder sich mehr darum kümmern.
Wenn wir uns ansehen, wie mobile Apps heute gestaltet werden, gibt es sehr oft eine Art animierten Übergang zwischen Zuständen. Selbst fertige native Komponenten haben eine Art einfache Animation zwischen Zuständen. Entwickler und Designer haben erkannt, dass diese kleine Animation dem Benutzer hilft, zu verstehen, was in der App passiert. Sie erleichtert die Navigation durch die App und sagt dem Benutzer, wohin er in der App gelangt.
Wenn Sie beispielsweise zu einer Unterkategorie navigieren, gleitet diese normalerweise von der rechten Seite des Bildschirms herein, und wir alle wissen irgendwie, was das bedeutet.

Animation ist wichtig. Sie kann verwendet werden, um die Benutzererfahrung zu verbessern.
Wenn Sie eine Website entwickeln, ist es einfach, Stunden damit zu verbringen, sicherzustellen, dass der Benutzer die ganze Geschichte durch erstklassige Übergänge sieht, wie die Bewegung zwischen Galeriebildern oder schicke Hover-Effekte ... aber sobald ein Benutzer einen Link anklickt, zerfällt diese gesamte Erfahrung und Sie beginnen von vorne. Das liegt daran, dass die Seite neu geladen wird und wir keine einfache/offensichtliche/native Möglichkeit haben, Animationen/Übergänge in dieser Situation zu handhaben.
Im Web konzentriert sich die meiste Anstrengung zur Verbesserung der Erfahrung auf Struktur, visuelles Design oder sogar die Leistung der Website. Es gibt ein paar Elemente, die Sie hier und da herumschieben können, aber das war's. Ein langweiliges Überbleibsel aus der Zeit, als das Web einfach dazu diente, durch eine Reihe von Textseiten zu navigieren, die später mit etwas gleitendem Text aufgewertet wurden.
Es gibt einige sehr schicke Websites, die voller Animationen oder unglaublicher WebGL-Hieroglyphen im Hintergrund sind. Leider sind sie oft schwer zu navigieren und Ihr Laptop-Akku ist in etwa 15 Minuten leer. Aber sie sind sicherlich schön anzusehen. Diese Websites sind voller Animationen, aber die meiste davon wird verwendet, um Sie zu beeindrucken, und nicht, um Ihnen die Navigation zu erleichtern, die Erfahrung schneller zu machen oder Ihnen das Browsen der Website zu erleichtern.
Die Quelle des Problems
All dies wirft eine große Frage auf. Wir haben die gesamte Technologie, um diese Seitenübergangsfunktionen im Web zu nutzen. Warum tun wir es nicht? Liegt es daran, dass wir es nicht wollen? Liegt es daran, dass wir nicht denken, dass das Teil unserer Arbeit ist? Ist es so schwer, dass wir für Projekte doppelt so viel verlangen müssten und Kunden es nicht kaufen?
Werfen wir einen Blick auf einen anderen möglichen Grund. Oft wählt ein Unternehmen Technologien, die für alle seine Projekte üblich sind. Sie als Front-End-Entwickler haben nicht viel Kontrolle darüber, was auf dem Server implementiert wird, also können Sie vielleicht nicht auf einige serverseitige Rendering Ihres JSX zählen.
Vielleicht müssen Sie sich für etwas Stabiles und Allgemein einsetzbares für jede Art von Lösung entscheiden (was normalerweise bedeutet, je weniger Codebasis, desto flexibler), sodass Sie gezwungen sind, ein Framework in Ihrem Entwicklungsstack zu vermeiden. Das ist leider sinnvoll. Sie möchten kein Kontaktformular in 10 verschiedenen Frameworks implementieren, nur weil Sie entschieden haben, dass ein bestimmtes Framework eine gute Grundlage für dieses spezielle Projekt ist. Und fangen wir gar nicht erst mit der Sicherheit an, die im Laufe der Jahre verbessert wurde. Sie können sie nicht einfach wegwerfen, nur weil Sie möchten, dass Ihr Benutzer beim Surfen auf Ihrer Website etwas mehr Spaß hat.
Es gibt einen weiteren möglichen Grund. Vielleicht möchten Sie auf WordPress aufbauen, weil Sie all die Open-Source-Goodies nutzen möchten, die die Leute über die Jahre für Sie vorbereitet haben. Würden Sie all diese „kostenlosen“ Funktionen gegen eine bessere Erfahrung eintauschen? Wahrscheinlich nicht…
Das Ziel
Abgesehen von drastischen und unrealistischen Änderungen wie dem Verzicht auf alle Bilder und Videos, ist unsere Website-Ladezeit vom Server eben, wie sie ist. Wir haben eine serverseitig gerenderte Seite und abgesehen von einem schnelleren Server oder besserem Caching gibt es nicht viel zu tun, um dies zu verbessern.
Der Weg zur Verbesserung der Ladezeit ist also, ein wenig zu schummeln! Schummeln, indem man den Benutzer denken lässt, es dauere weniger Zeit, weil er durch das, was auf dem Bildschirm passiert, abgelenkt ist. Schummeln, indem man den Inhalt im Voraus lädt und den Übergang animiert.
Lassen Sie uns einige Effekte einführen, die für den Übergang verwendet werden könnten. Selbst ein einfaches Ein-/Ausblenden kann Ihnen ein ganz anderes Gefühl vermitteln, besonders mit einem Element, das das Laden anzeigt. Sehen wir uns einige Beispiele an.
Hinweis: Alle folgenden Beispiele sind Websites, die auf PHP basieren und praktisch ohne JavaScript wie jede andere Website funktionieren.
Ein einfaches Aus-/Einblenden verbessert nahtlos die Benutzererfahrung vor dem Klick auf den Link und ist nicht so störend wie ein normaler Browser-Neuladevorgang. Die Ladeanzeige an einem Menüsymbol stellt sicher, dass der Benutzer nicht in Panik gerät, falls die Seite etwas länger zum Laden braucht.
Einige interessante Animationen können durch die Animation verschiedener Elemente auf unterschiedliche Weise erzielt werden, was auch mit dem Ausblenden kombiniert werden kann.
Oder wie wäre es, die Seite mit einem anderen Element abzudecken?
Diese wenigen Arbeitsstunden verleihen der Website ein völlig neues Gefühl, indem sie Ihre statische Seite in eine animierte verwandeln. Und das ohne zusätzliche Vorbereitung.
Wenn Sie sich jedoch in der Entwurfsphase Ihrer Absichten bewusst sind, können Sie das Design an Ihre Bedürfnisse anpassen. Gängige Elemente können im Voraus vorbereitet werden.
Das Hauptnavigationsmenü in Form von Blasen spielt mit dem Benutzer, während der Inhalt der nächsten Seite geladen wird. Die Auswirkung ist, dass der Benutzer nicht gelangweilt ist und weiß, dass etwas passiert. Da die Animation beim Klicken auf den Link beginnt, merkt der Benutzer nicht einmal, dass er auf etwas gewartet hat.
Lösung
Wir haben geklärt, was wir tatsächlich tun wollen und warum wir es tun wollen… sehen wir uns an, wie wir das erreichen können.
Während im Backend nicht viel getan werden kann, gibt es auf der Browserseite eine ganze Menge, was Sie tun können. Ein gutes Beispiel ist Turbolinks, entwickelt von den Leuten von Basecamp, das Ihre Website aufwertet und ihr ein App-ähnlicheres Gefühl verleiht, indem es das Laden von Inhalten mit JavaScript ermöglicht. Es vermeidet einfach diesen unschönen Sprung beim Neuladen der Browserseite. Turbolinks kümmert sich um den Browserverlauf, das Laden und all die anderen Dinge, die normalerweise im Hintergrund des Browsers passieren würden. Der entscheidende Punkt hier ist die Kontrolle über das Laden und Ersetzen von Inhalten, denn solange der Browser nicht neu lädt, liegt alles, was auf dem Bildschirm passiert, in unserer Kontrolle.
Denken wir über einige Konzepte nach, die wir zur Verbesserung unserer Erfahrung nutzen können. Die Ladezeit ist unser größter Feind, also wie können wir sie im Browser verbessern?
Vorspulen
In den meisten Fällen muss die Anfrage zum Laden der nächsten Seite nicht erst dann beginnen, wenn der Benutzer auf den Link klickt. Es gibt ein weiteres Ereignis, das die Absicht des Benutzers anzeigen kann, die Seite zu besuchen, und das ist ein Hover über dem Link. Es gibt immer ein paar hundert Millisekunden zwischen Hover und Klick auf den Link, warum diese Zeit nicht zu unserem Vorteil nutzen? Verdammt, wenn die Mehrheit Ihrer Benutzer auf der nächsten Seite landet, die Ihnen bekannt ist und für die Sie Statistiken haben, warum dann nicht im Grunde preloaden, sobald die anfängliche Rendereung abgeschlossen ist, während der Benutzer versucht, sich auf der aktuellen Seite zurechtzufinden?
Das folgende Diagramm veranschaulicht, wie viele Dinge parallel passieren und uns einige dieser kostbaren Zeit sparen können, anstatt sie nacheinander zu erledigen. Ein sehr häufiger Fehler in kundenspezifischen Lösungen für Seitenübergänge, die Leute für sich selbst erstellen, ist der Beginn der Anfrage, der normalerweise ausgelöst wird, nachdem die Seite entladen/ausgeblendet wurde.

Caching
Während dies für einige dynamische Websites ein Problem sein kann, sind statische Websites perfekte Kandidaten für das Caching. Warum eine Seite zweimal laden, wenn Sie die Kontrolle über das Laden und Ersetzen des Inhalts haben? Sie können die Inhalte speichern und verwenden, falls der Benutzer dieselbe Seite besucht oder mit der Zurück-Schaltfläche des Browsers dorthin zurückkehrt.
Oder Sie können den Cache verwenden, um Seiten beim Hovern vorzuladen und den Cache regelmäßig zu leeren (vielleicht nach jedem Seitenbesuch), um bei dynamischen Websites immer die neueste Version der Seite zu haben und gleichzeitig diese Preload-Funktion zu aktivieren.
Interessanterweise „investieren“ Progressive Web Apps auch in diesen Bereich, obwohl der Ansatz etwas anders ist.
Animation
All diese Konzepte sind großartig, aber wir müssen immer noch Animationen ins Spiel bringen.
Die Kontrolle über das Laden und Ersetzen der Seite kann von uns übernommen werden, sodass wir jederzeit mit den Inhalten der Seite spielen können. Es ist beispielsweise einfach genug, der Seite eine Klasse hinzuzufügen, während sie geladen wird. Dies gibt uns die Möglichkeit, einen anderen Zustand für die Seite zu definieren oder sie mit anderen Worten auszublenden/entladen. Wenn die Animation abgeschlossen ist und die Seite geladen ist, können wir den Inhalt ersetzen und die Zustands-Klasse entfernen, damit die Seite wieder herein animiert.
Eine andere Möglichkeit besteht darin, Ihre Seite mit JavaScript „aus“ zu animieren, den Inhalt zu ersetzen und sie wieder „ein“ zu animieren.
Es gibt viele Möglichkeiten, dies anzugehen, aber in jedem Fall ist die Schlüsselfunktion hier, den Browser nicht neu laden zu lassen.
Bereit zum Start
Das sind drei Hauptkonzepte, die einen großen Unterschied machen werden. Der Punkt ist, dass es mit etwas zusätzlichem Aufwand nicht so schwer ist, dies selbst zu tun, und ich ermutige Sie, dies zu tun.
Es wird eine holprige Straße mit vielen möglichen Kopfschmerzen sein, da es nicht immer einfach ist, die native Funktionalität des Browsers nicht zu beeinträchtigen.
Wenn Sie jedoch eher ein Load-and-Go-Typ sind, habe ich ein kleines Paket namens swup zusammengestellt, das all die Dinge regelt, die Turbolinks tut, plus alle drei Konzepte, die wir hier behandelt haben. Hier ist eine kleine Demo.
Was sind die Vorteile von swup?
- Es funktioniert ausschließlich im Frontend, sodass keine Servereinstellung erforderlich ist. Obwohl Sie leicht eine Übertragung nur der erforderlichen Daten basierend auf
X-Requested-Withim Anfrageheader implementieren können (eine kleine Anpassung von swup ist basierend auf Ihrer spezifischen Lösung erforderlich). - Verwendet die Browser-History-API, um die korrekte Funktionalität Ihrer Website sicherzustellen, wie sie auch ohne swup funktionieren würde (Vor-/Zurück-Schaltflächen und die richtige Route in der URL-Leiste).
- Es muss nicht Teil des anfänglichen Lade-Batches sein und kann nach dem anfänglichen Rendern geladen und aktiviert werden.
- Kümmert sich um das Timing, d. h. es erkennt automatisch das Ende Ihrer in CSS definierten Übergänge und kümmert sich in der Zwischenzeit um das Laden der nächsten Seite. Der gesamte Prozess basiert auf Promises, sodass keine einzige Millisekunde verschwendet wird.
- Wenn in den Optionen aktiviert, kann swup eine Seite vorladen, wenn ein Link gehovert wird oder sobald er im geladenen Inhalt gefunden wird (mit dem Attribut
data-swup-preload). - Wenn in den Optionen aktiviert, speichert swup auch die Inhalte der Seiten im Cache und lädt dieselbe Seite nicht zweimal.
- Swup sendet eine ganze Reihe von Ereignissen, die Sie in Ihrem Code verwenden können, um Ihr JavaScript, Analysen usw. zu aktivieren.
- Sie können beliebig viele Elemente zum Ersetzen definieren, solange sie für alle Seiten gemeinsam sind. Dies ermöglicht es, gemeinsame Elemente auf der Seite zu animieren und gleichzeitig deren Teile zu ersetzen. Das Blasennavigationsmenü in unserem früheren Beispiel verwendet diese Funktion, bei der die Häkchen auf den Blasen von der geladenen Seite stammen, aber der Rest der Blase auf der Seite bleibt, sodass er animiert werden kann.
- Bietet Ihnen die Möglichkeit, für Übergänge zwischen verschiedenen Seiten unterschiedliche Animationen zu verwenden.
Für diejenigen unter Ihnen, die ihre Animationen lieber mit JavaScript erstellen, gibt es auch eine Version davon namens swupjs. Während es schwieriger sein kann, Animationen in JavaScript zu implementieren, gibt es Ihnen definitiv mehr Kontrolle.
Fazit
Die Animation und nahtlose Erfahrung muss nicht streng auf native Anwendungen oder die neuesten Technologien beschränkt sein. Mit wenig Aufwand, Zeit und etwas Code kann selbst Ihre WordPress-Website wie eine native wirken. Und während wir das Web so lieben, wie es ist, denke ich, wir können immer versuchen, es ein bisschen besser zu machen.
Zum Spaß => Man könnte sich IE4 ansehen (ja, Sie haben richtig gelesen). Es hat einige Metas für Seitenübergänge eingeführt: https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/ms532847(v=vs.85)#Interpage_Transition ;)
Warum haben Sie nicht die Möglichkeit genutzt, auch die URL in Ihrer swup-Demo zu ändern? Ohne eindeutige URLs ist Ihre Web-App nicht SEO-freundlich und Seiten können nicht geteilt werden.
Ich habe vor 4 Jahren mit der History-API herumgespielt und https://github.com/devote/HTML5-History-API in meiner Demo verwendet, aber ich habe kein Caching oder Preload-System genutzt, weil ich nur ein bisschen mit pushState experimentiert habe. Obwohl die Hauptmenüseiten der Demo SEO-freundlich und teilbar sind.
Demo: https://projects.gentle.media/artisan/
Da swup nur im Browser läuft, kann es nicht beeinflussen, ob Ihre Seite SEO-freundlich ist oder nicht.
Ich verstehe Ihren Punkt bezüglich des Teilens von Seiten. Swup behält immer die aktuelle URL in der URL-Leiste bei. Die Demo soll die Fähigkeit zum Übergang zwischen Seiten demonstrieren und die URL wird tatsächlich in dem iframe geändert, der die Seite mit aktiviertem swup enthält (linke Seite der Seite). Ich habe versucht, die URL-Änderung in der Leiste oben auf der Seite zu demonstrieren.
Ah… jetzt sehe ich, was Sie getan haben. Entschuldigung, das habe ich zuerst nicht bemerkt!
Aus irgendeinem Grund funktioniert in Ihrer Demo das Scrollen nicht… ich bin mir nicht sicher, ob es an meinem Browser liegt, aber wenn ich die Konsole überprüfe, steht dort „Uncaught TypeError: Cannot read property ‘msie’ of undefined“
Ich kann das Problem nicht reproduzieren. Haben Sie es in einem anderen Browser versucht?
Wenn Sie glauben, dass es sich um einen Fehler handelt, können Sie gerne ein Ticket auf Github eröffnen.
Er bezieht sich auf meine Demo :)
Die meisten Seiten haben keine Scrollleisten, aber Scroll-to-Anchor-Animationen beim Klicken auf eine Schaltfläche, und dieser Konsolenfehler ist auf eine unschöne Benutzeragenten-Abfrage zurückzuführen, die ich damals durchgeführt habe, um etwas für alte IE-Versionen zum Laufen zu bringen.
Oh, ich verstehe.
Wow, das ist fantastisch! Ich stimme zu. Es ist viel schöner, eine gut animierte Webseite zu haben. Es fühlt sich nativ an. Es ist einer der Hauptgründe, warum ich Websites mit Vue/Nuxt erstelle. Aber wie Sie sagen, man kann sie nicht immer verwenden. Ich habe mir den Kopf zerbrochen, um eine passende Lösung zu finden. Ich werde Ihre Vorschläge ausprobieren! Animieren Sie das Web!!
Bin ich der Einzige, der die Node-Module nicht versteht und wie man sie in einer einfachen alten HTML-Datei verwendet? Die Installationsanweisungen sind etwas spärlich.
npm install swupOkay, das ist erledigt; und jetzt? Ich habe einen Ordner „node_modules“ mit allen Dateien, aber wie würde ich sie in eine Beispiel-HTML-Seite einbinden? Ich habe nach einer Lösung gesucht, aber keine leicht verständliche gefunden, vielleicht hilft eine Antwort auf diesen Kommentar anderen :)
Hallo, danke für Ihr Feedback! Soweit ich weiß, gibt es keine Möglichkeit, NPM-Pakete im Browser ohne zusätzliche Schritte zu laden. NPM ist ein Paketmanager und lädt Ihre definierten Abhängigkeiten mit den Abhängigkeiten von Abhängigkeiten usw. Es gibt viel Logik im Hintergrund, damit all diese Paketimporte möglich sind. Damit swup als Datei im Browser geladen werden kann, muss es mit Tools wie webpack oder Browserify gebündelt werden, sodass es den gesamten Code einschließlich der Abhängigkeiten enthält.
Das gesagt, ich verwende webpack schon lange für meinen gesamten Code. Es ist mir nicht eingefallen, dass jemand es als eigenständige Datei laden möchte. Ich werde versuchen, diese Dateien später heute in ein Repository aufzunehmen.
Hier sind sie: https://github.com/gmrchk/swup/tree/master/dist.
Wenn Sie sehen möchten, wie webpack konfiguriert ist, um swup in eine eigenständige Datei zu bündeln, finden Sie die Konfiguration hier: https://github.com/gmrchk/swup/blob/master/webpack.config.js.
Vielen Dank!
Großartiger Artikel, danke fürs Teilen!
Eine Sache, die ich hinzufügen möchte, ist die Berücksichtigung von Benutzern, die eine reduzierte Animationserfahrung wünschen. Vollbild-Seitenübergänge sind ein häufiger Auslöser für vestibuläre Erkrankungen wie Schwindel. Die Erstellung einer alternativen Erfahrung mit wenig bis gar keiner Animation unter Verwendung der reduced motion Media Query kann diese Benutzer berücksichtigen, ohne dass die App-ähnlichen Effekte vollständig abgeschafft werden müssen.
Während die Media Query derzeit nur von Safari unterstützt wird, ist sie als Level 5 Media Query für den plattformübergreifenden Einsatz vorgesehen.
Was sind die Vorteile und Unterschiede im Vergleich zu barba.js und den anderen bestehenden ähnlichen Bibliotheken?
Ich habe mehrere Bibliotheken gesehen, wobei Barba.js definitiv die fortschrittlichste ist, also werde ich mich darauf konzentrieren.
Tatsächlich ist es fast identisch mit swupjs, wenn man es damit vergleicht. Ich finde swupjs etwas praktischer, da die Logik zur Auswahl des Übergangs für Sie erledigt wird und Sie keine Promises schreiben müssen, um auf das Ende des Übergangs zu warten, sondern ein einfacher Aufruf der Funktion
nextausreicht. Andererseits habe ich Barba.js selbst noch nie benutzt, aber es scheint gut aufgeräumt zu sein.Bei swup ist der Unterschied etwas signifikanter. Sie können mit wenig bis gar keinem Aufwand über CSS recht komplexe Übergänge erstellen. Der ganze Sinn der Sache, warum ich damit angefangen habe, war, die Seitenübergänge überhaupt erst einmal in begrenzter Zeit machen zu können, wie es in kommerziellen Projekten üblich ist.
Das ist großartig. Ich frage mich, welche Überlegungen für Screenreader bei der Änderung von Seitenstatus angestellt werden könnten. Gibt es eine Art focus() auf die Überschrift des neuen Seiteninhalts? Ich denke, es liegt ganz beim jeweiligen Entwickler, ob es eine „after render“-Funktion gibt, die genutzt werden kann.
Das ist ziemlich cool. Eine Sache, die ich bemerkt habe, und ich bin mir nicht sicher, ob das so beabsichtigt ist, ist, dass swup die Skripte auf den geladenen Seiten nicht auswertet. Ist das beabsichtigt?
Swup fügt den Inhalt der nächsten Seite in Ihr DOM ein. Es scheint, dass das für den Browser nicht ausreicht, um das Skript im Skript-Tag zu laden.
Natürlich könnte man alle Skripte im geladenen Inhalt durchgehen und sie manuell auf Ihre Seite setzen. Ich bin mir nicht sicher, was das bewirken würde, wenn Sie beispielsweise dieselbe Seite zweimal besuchen (denselben Code zweimal in Ihr DOM einfügen). Wenn der Browser das Skript erneut lädt, haben Sie denselben Code zweimal auf Ihrer Seite, und wenn nicht, dann hat Ihre Seite nicht denselben Code wie bei einem normalen Ladevorgang.
All dies scheint eine sehr hackelige Lösung zu sein und ich würde sie lieber vermeiden. Es gibt zwei Dinge, die Sie tun könnten: Alle Codes zusammenfassen und ihn ausführen, wenn Sie ihn benötigen, oder eine Art Code-Splitting verwenden, das die Skripte automatisch für jede Seite lädt.
Ich verstehe. Mein Test war eigentlich sehr einfach. Ich habe nur ein Konsolenprotokoll auf jeder der geladenen Seiten ausgegeben und geprüft, ob sie beim Seitenwechsel laufen würden. Das passiert nur beim ersten Laden der Seite. Turbolinks scheint das zu handhaben, daher meine Frage, ob dies eine bewusste Entscheidung von swup war, dies nicht zu tun.
Ich hatte eine solche Funktionalität nie selbst benötigt und bin irgendwie dagegen… aber wenn Sie meine Meinung nicht teilen, können Sie gerne ein Issue eröffnen. Mir scheint das generell ein schlechter Ansatz für eine Website ohne Seitenneuladungen zu sein.
Sie könnten so etwas versuchen und es ausführen, wenn die neue Seite bereit ist.
Fügen Sie einfach eine Klasse wie ‚js-inline‘ zum Skript-Tag hinzu, das geladen werden soll.
Wissen Sie zufällig, wie ich das in WordPress zum Laufen bringen kann?
Ich bin kein WordPress-Experte, aber wenn Sie in der Lage sind, Ihre Vorlage zu ändern, sollten Sie sie auch wie jede andere Website integrieren können. Informationen finden Sie in der Dokumentation.
Toller Artikel. Und danke, dass Sie Videos anstelle von GIFs eingebettet haben!