Sie möchten ein automatisch abspielendes, sich wiederholendes Video ohne Ton? In der gängigen Sprache ist das die exakte Bedeutung des Wortes *GIF*. Das Wort ist geblieben, aber das Bildformat selbst ist alt und veraltet. Twitter hat zum Beispiel einen „GIF“-Button, der tatsächlich ein <video>-Element mit einer MP4-Datei in Ihren Tweet einfügt – kein .gif in Sicht. Es gibt eine betörende Menge an Möglichkeiten, das gleiche Ergebnis zu erzielen, aber eines ist klar: Es gibt wirklich keinen guten Grund mehr, das sperrige .gif-Dateiformat zu verwenden.
Verwenden Sie ein HTML <video>-Element
Es ist einfach, das Verhalten eines GIF mit dem HTML-Video-Element nachzubilden.
<video autoplay loop muted playsinline src="cats.mp4"></video>
Mit diesem Code wird das Video automatisch in einer Endlosschleife ohne Ton abgespielt. playsinline bedeutet, dass mobile Browser das Video dort abspielen, wo es sich auf der Seite befindet, anstatt es im Vollbildmodus zu öffnen.
Während das HTML-Video-Element selbst seit vielen Jahren unterstützt wird, gilt dies nicht für die Vielzahl von Videoformaten.
Videos bestehen aus zwei Teilen: dem Container und dem Videocodec. (Wenn Ihr Video Audio enthält, besteht es aus drei Teilen, wobei der dritte der Audiocodec ist.) Container können Video-, Audio-, Untertitel und Metainformationen speichern. Die beiden gängigsten Container für Videos im Web sind MP4 und WebM. Der Container ist dasselbe wie der Dateityp – wenn eine Datei mit der Endung .mp4 endet, bedeutet dies, dass sie einen MP4-Container verwendet. Die Dateiendung verrät jedoch nicht den Codec. Beispiele für Videocodecs, die im Web häufig verwendet werden, sind VP8, VP9, H.264 und HEVC (H.265). Damit Ihr Video online abgespielt werden kann, muss der Browser sowohl den Videocontainer als auch den Codec unterstützen.
Die Browserunterstützung für Videos ist ein Labyrinth, was ein Grund dafür ist, dass YouTube-Einbettungen allgegenwärtig sind, aber das funktioniert für unseren Anwendungsfall nicht. Sehen wir uns die Videoformate an, die es wert sind, in Betracht gezogen zu werden.
Container
- MP4 wurde ursprünglich im Jahr 2001 veröffentlicht. Es wird von allen Webbrowsern unterstützt und das schon seit geraumer Zeit.
- WebM wurde 2010 veröffentlicht. Es funktioniert in allen Browsern außer iOS Safari.
Codecs
- Der H.264-Codec funktioniert in allen Browsern.
- HEVC/H.265, der Nachfolger von H.264, wird von Safari, Edge und Chrome (ab Version 105) unterstützt.
- VP9 ist der Nachfolger des VP8-Codecs. VP9 wird von allen Browsern unterstützt, die WebM unterstützen.
- Der AV1-Codec wird seit 2018 in Chrome und seit 2019 in Firefox unterstützt. Er wurde noch nicht in Edge oder Safari integriert.
Eine MP4-Datei, die den H.264-Codec verwendet, funktioniert überall, liefert aber nicht die beste Qualität oder die kleinste Dateigröße.
AV1 hat noch keine Cross-Browser-Unterstützung, ist aber mit seiner Veröffentlichung im Jahr 2018 der modernste Codec überhaupt. Er wird bereits von Netflix, YouTube und Vimeo zumindest für einige Videos und Plattformen verwendet. AV1 ist ein lizenzfreier Videocodec, der speziell für das Internet entwickelt wurde. AV1 wurde von der Alliance for Open Media (AOM) entwickelt, einer Gruppe, die von Google, Mozilla, Cisco, Microsoft, Netflix, Amazon und Intel gegründet wurde. Apple ist jetzt ebenfalls Mitglied, daher kann man davon ausgehen, dass alle Browser AV1 irgendwann unterstützen werden. Edge „wertet derzeit noch Optionen zur Unterstützung von AVIF und AV1 aus“.
Die kürzlich neu gestaltete Website des Beratungsunternehmens Evil Martians ist ein Beweis für die Reduzierung der Dateigröße, zu der AV1 fähig ist.
Wenn Sie neuere Videoformate mit Fallbacks für ältere Browser verwenden möchten, können Sie mehrere <source>-Elemente verwenden. Die Reihenfolge der Quellenelemente ist wichtig. Geben Sie die ideale Quelle oben und den Fallback danach an.
<video autoplay loop muted playsinline>
<source src="cats.webm" type="video/webm"> <!-- ideal -->
<source src="cats.mp4" type="video/mp4"> <!-- fallhack -->
</video>
Basierend auf dem obigen Code wird cats.webm verwendet, es sei denn, der Browser unterstützt dieses Format nicht, in welchem Fall stattdessen die MP4-Datei angezeigt wird.
Was ist, wenn Sie mehrere MP4-Dateien einfügen möchten, die aber jeweils einen anderen Codec verwenden? Bei der Angabe des type können Sie einen Codecs-Parameter einfügen. Die Syntax ist für jeden, der kein Hardcore-Codec-Nerd ist, horrend kompliziert, aber sie sieht ungefähr so aus:
<video autoplay loop muted playsinline>
<source src="cats.mp4" type="video/mp4; codecs=av01.0.05M.08" >
<source src="cats.mp4" type="video/mp4" >
</video>
Mit dem obigen Code wählt der Browser AV1 aus, wenn er dieses Format abspielen kann, und greift andernfalls auf das universell unterstützte H.264 zurück. Für AV1 beginnt der codecs-Parameter immer mit av01. Die nächste Zahl ist entweder 0 (für das Hauptprofil), 1 (für das High-Profil) oder 2 (für das Professional-Profil). Als Nächstes folgt eine zweistellige Level-Nummer. Darauf folgt entweder der Buchstabe M (für den Main Tier) oder H (für den High Tier). Es ist schwierig zu verstehen, was all diese Dinge bedeuten, daher könnten Sie Ihr AV1-Video in einem WebM-Container bereitstellen und die Angabe des Codecs ganz vermeiden.
Die meisten Videobearbeitungssoftware erlaubt es Ihnen nicht, als AV1 oder sogar als WebM zu exportieren. Wenn Sie eines dieser Formate verwenden möchten, müssen Sie Ihr Video in etwas anderes exportieren, z. B. in eine .mov-Datei, und es dann mit dem Befehlszeilenwerkzeug FFmpeg konvertieren.
ffmpeg -i yourSourceFile.mov -map_metadata -1 -c:a libopus -c:v librav1e -qp 80 -tile-columns 2 -tile-rows 2 -pix_fmt yuv420p -movflags +faststart -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" videoTitle.mp4
Sie sollten die bestmögliche Auflösung der Quelldatei verwenden. Offensichtlich können Sie die Bildqualität, sobald sie verloren ist, nicht durch die Konvertierung in ein überlegenes Format verbessern. Die Verwendung einer .gif-Datei als Quelldatei ist nicht ideal, da die visuelle Qualität von .gif nicht großartig ist, aber Sie erhalten immer noch den Vorteil einer erheblichen Reduzierung der Dateigröße.
ffmpeg -i cats.gif -map_metadata -1 -an opus -c:v librav1e -qp 80 -tile-columns 2 -tile-rows 2 -pix_fmt yuv420p -movflags +faststart -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" cats.mp4
Unter Mac können Sie FFmpeg mit Homebrew herunterladen.
brew install ffmpeg
Hier ist ein schönes Beispiel für Videos im Webdesign auf der meisterhaft gestalteten Oxide-Website.
Wenn Sie das Video als Hintergrund verwenden und andere Elemente darüber legen möchten, ist die Arbeit mit <video> etwas schwieriger als mit einem background-image in CSS und erfordert Code, der ungefähr so aussieht:
.video-parent {
position: relative;
width: 100vw;
height: 100vh;
}
.video-parent video {
object-fit: cover;
position: absolute;
inset: 0;
z-index: -1;
width: 100%;
height: 100%;
}
Das <video>-Element ist eine absolut akzeptable Option zum Ersetzen von GIFs, aber es hat einen unglücklichen Nebeneffekt: Es verhindert, dass der Bildschirm des Benutzers in den Ruhezustand wechselt, wie in diesem Beitrag eines ehemaligen Produktmanagers des Microsoft Edge-Browsers erklärt wird.
Die Vorteile der Verwendung eines Bildes
Ob es sich um eine animierte WebP- oder eine animierte AVIF-Datei handelt, die Verwendung von Bildern anstelle von Videos hat einige Vorteile.
Ich bin mir nicht sicher, wie viele Leute ihre GIFs tatsächlich künstlerisch gestalten wollen, aber die Verwendung des <picture>-Elements eröffnet einige Möglichkeiten, die mit <video> nicht leicht zu erreichen wären. Sie könnten zum Beispiel verschiedene Animationen für den Hell- und Dunkelmodus angeben.
<picture>
<source srcset="dark-animation.avifs" media="(prefers-color-scheme: dark)">
<img src="light-animation.avif" alt="">
</picture>
Wir möchten vielleicht, dass ein Video auf Mobilgeräten ein anderes Seitenverhältnis hat als auf dem Desktop. Wir könnten Teile des Bildes einfach mit CSS zuschneiden, aber das scheint eine Verschwendung von Bytes und etwas lückenhaft zu sein. Mit einer Media Query können wir eine andere animierte Bilddatei basierend auf der Bildschirmgröße oder Ausrichtung anzeigen.
<picture>
<source type="image/avif" srcset="typeloop-landscape.avifs" media="(orientation: landscape)"">
<img src="typeloop-portrait.avif" alt="">
</picture>
All dies ist *mit Video möglich* – Sie können matchMedia verwenden, um beliebige Media Queries in JavaScript durchzuführen und programmatisch die src eines <video>-Elements zu ändern.
const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
if (mediaQuery.matches) {
document.querySelector("video").src = "dark-animation.mp4";
}
Ich glaube, dass immer dann, wenn es eine Möglichkeit gibt, etwas mit Markup zu tun, dies JavaScript vorgezogen werden sollte.
Sie können Rasterbilder *innerhalb* eines SVG mit dem <image>-Element verwenden. Dies schließt animierte Bildformate ein. Es gibt nicht viel, was Sie mit einem Bild innerhalb eines SVG tun können, was Sie nicht bereits mit CSS tun könnten, aber wenn Sie ein Bild mit Vektorelementen innerhalb eines SVG gruppieren, dann haben Sie den Vorteil, dass sich die verschiedenen Elemente zusammen bewegen und skalieren.
Das <img>-Element hat den Vorteil des nativen Lazy-Loadings.
<img loading="lazy" src="cats.avif" alt="cats">
Wenn Sie ein Hintergrundvideo wünschen, das den gesamten Bildschirm einnimmt, ist die Positionierung eines background-image etwas einfacher als die eines HTML <video>-Elements.
.background-video {
background-image: url("coolbackground.webp");
background-repeat: no-repeat;
background-size: cover;
height: 100vh;
width: 100vh;
}
Wenn Sie ältere Browser unterstützen möchten, könnten Sie das <picture>-Element mit einem Fallback von entweder einem animierten WebP oder, nur für Safari, einem img mit einer Video-src verwenden, oder wenn Sie sich um uralte Browser kümmern, vielleicht ein APNG (animiertes PNG) oder ein GIF. Die Verwendung mehrerer Bildformate auf diese Weise kann unpraktisch sein, wenn Sie Bilder manuell optimieren; aber es ist relativ trivial, wenn Sie einen Dienst wie Cloudinary verwenden.
<picture>
<source type="image/avif" srcset="cats.avif">
<img src="cats.webp">
</picture>
Es gibt immer noch keine gut unterstützte Möglichkeit, Fallback-Bilder für CSS-Hintergründe anzugeben. image-set ist ein Äquivalent des <picture>-Elements, [aber für background-image. Leider unterstützt derzeit nur Firefox das type-Attribut von image-set.
.box {
background-image: image-set(
url("cats.avif") type("image/avif"),
url("cats.webp") type("image/webp"));
}
Diese Browser-Supportdaten stammen von Caniuse, wo Sie weitere Details finden. Eine Zahl gibt an, dass der Browser die Funktion ab dieser Version und aufwärts unterstützt.
Desktop
| Chrome | Firefox | IE | Edge | Safari |
|---|---|---|---|---|
| 113 | 89 | Nein | 113 | 17.0 |
Mobil / Tablet
| Android Chrome | Android Firefox | Android | iOS Safari |
|---|---|---|---|
| 127 | 127 | 127 | 17.0 |
Animiertes WebP verwenden
Das WebP-Bildformat wurde 2010 von Google eingeführt. WebP, einschließlich animiertem WebP, hat eine breite Browserunterstützung.

<img src="nyancat.webp" alt="A cat flying through space leaving a rainbow trail">
Diese Browser-Supportdaten stammen von Caniuse, wo Sie weitere Details finden. Eine Zahl gibt an, dass der Browser die Funktion ab dieser Version und aufwärts unterstützt.
Desktop
| Chrome | Firefox | IE | Edge | Safari |
|---|---|---|---|---|
| 32 | 65 | Nein | 18 | 16.0 |
Mobil / Tablet
| Android Chrome | Android Firefox | Android | iOS Safari |
|---|---|---|---|
| 127 | 127 | 4.2-4.3 | 14.0-14.4 |
Animiertes AVIF verwenden
WebP ist nun zwölf Jahre alt. Das modernere AV1 Image File Format (AVIF), veröffentlicht 2019, ist das beste Bildformat für die meisten Anwendungsfälle im Web. Die Konvertierung einer .gif-Datei in AVIF kann die Byteanzahl um über 90 % reduzieren.
<img src="nyancat.avif" alt="A cat flying through space leaving a rainbow trail">
Wie der Name schon sagt, basiert AVIF auf dem AV1-Videocodec. Wie WebP kann AVIF sowohl für statische Bilder als auch für Animationen verwendet werden. Es gibt keinen großen Unterschied zwischen einer animierten AVIF-Datei und einem AV1-Video in einem MP4-Container.
Sie können einen Schatten auf AVIF-Animationen legen, z. B.
filter: drop-shadow(2px 4px 6px black);
AVIF wird bereits von Safari, Firefox, Samsung Internet und Chrome unterstützt. Firefox unterstützte nur statische Bilder, nicht animiertes AVIF. Safari unterstützt Animationen ab Version 16.1. Da Firefox AVIF unterstützt, aber nicht animiertes AVIF, ist es leider unmöglich, das <picture>-Element erfolgreich zu verwenden, um AVIF nur Browsern anzuzeigen, die Animationen unterstützen. Bei folgendem Code würde Firefox das AVIF anzeigen, *aber als statisches Bild*, anstatt die animierte WebP-Version zu zeigen.
<picture>
<source srcset="https://fonts.gstatic.com/s/e/notoemoji/latest/1f4a9/512.avif" type="image/avif">
<img src="https://fonts.gstatic.com/s/e/notoemoji/latest/1f4a9/512.webp" alt="💩" width="32" height="32">
</picture>
Tools für AVIF werden immer besser. Videobearbeitungssoftware erlaubt Ihnen nicht, Aufnahmen als animiertes AVIF oder animiertes WebP zu exportieren. Sie müssen es in einem anderen Format exportieren und dann konvertieren. Auf der Website ezgif.com können Sie eine Videodatei oder ein .gif hochladen und es in AVIF oder WebP konvertieren. Sie könnten auch FFmpeg verwenden. Mit Cloudinary können Sie eine Videodatei oder ein altes .gif hochladen und es in fast jedes gewünschte Format konvertieren – einschließlich animiertem WebP und animiertem AVIF. Zum Zeitpunkt des Schreibens unterstützt Squoosh, eine Bildkonverter-App, noch kein animiertes AVIF.
Die Verbreitung in Design-Software lässt noch zu wünschen übrig. Beim Betrachten eines Prototyps spielt Figma alle animierten GIFs ab, die im Design enthalten sind. Bei AVIF können Sie dagegen nicht einmal ein statisches Bild importieren oder exportieren.

Ein Video mit einem <img>-Element verwenden
2018 gab Safari 11.1 Entwicklern die Möglichkeit, eine Videodatei als Quelle für das HTML <img>-Element zu verwenden. Dies funktioniert in Safari.
<img src="cat.mp4" alt="A Siamese cat walking in a circle">
Alle Codecs, die Safari für <video> unterstützt, werden auch von <img> unterstützt. Das bedeutet, dass Sie MP4, H.264 und HEVC verwenden können.
In Safari funktionieren Videodateien auch überall in CSS, wo Sie ein Bild verwenden könnten, wie z. B. background-image oder border-image.
.video-border {
border: 40px solid transparent;
border-image: url(abstract_bg_animation.mp4) 100 round;
}
Eine seltsame Folge dieser Funktion in Safari ist, dass das Vorschaubild eines <video>-Elements auch ein Video sein kann. Das Vorschaubild wird automatisch abgespielt, auch wenn Sie das automatische Abspielen von Videos blockiert haben. Safari behauptete, diese Funktion biete Leistungsvorteile, nicht nur gegenüber der Verwendung von .gif-Dateien, sondern auch gegenüber der Verwendung des <video>-Elements. Laut Apple:
Durch das Platzieren Ihrer Videos in
<img>-Elementen lädt der Inhalt schneller, verbraucht weniger Akkuleistung und erzielt eine bessere Leistung.
Colin Bendell, Co-Autor von O‘Reillys High Performance Images, schrieb über die Nachteile des <video>-Tags für unseren Anwendungsfall.
Im Gegensatz zu
<img>-Tags laden Browser<video>-Inhalte generell nicht vor. Generell laden Vorlader nur JavaScript-, CSS- und Bildressourcen vor, da diese für das Seitenlayout entscheidend sind. Da<video>-Inhalte beliebig lang sein können – von Micro-Formaten bis hin zu Langform – werden<video>-Tags übersprungen, bis der Hauptthread bereit ist, ihren Inhalt zu parsen. Dies verzögert das Laden von<video>-Inhalten um viele hundert Millisekunden.[…]
Schlimmer noch, viele Browser gehen davon aus, dass
<video>-Tags Langform-Inhalte enthalten. Anstatt die gesamte Videodatei auf einmal herunterzuladen, was Ihren Mobilfunkdatentarif belasten würde, falls Sie das gesamte Video nicht ansehen, führt der Browser zunächst eine 1-Byte-Anfrage durch, um zu prüfen, ob der Server HTTP Range Requests unterstützt. Dann folgen mehrere Range Requests in verschiedenen Chunks, um sicherzustellen, dass das Video ausreichend (aber nicht übermäßig) gepuffert wird. Die Folge sind mehrere TCP-Roundtrips, bevor der Browser überhaupt mit der Dekodierung des Inhalts beginnen kann, und erhebliche Verzögerungen, bevor der Benutzer etwas sieht. Bei Mobilfunkverbindungen mit hoher Latenz können diese Roundtrips Videoladungen um Hunderte oder Tausende von Millisekunden verzögern.
Chrome hat dies als „WontFix“ markiert – was bedeutet, dass sie diese Funktion aus verschiedenen Gründen nie unterstützen werden. Es gibt jedoch ein offenes Problem auf GitHub, es dem HTML-Standard hinzuzufügen, was Googles Hand zwingen würde.
Berücksichtigung von Benutzereinstellungen
Video hat den Vorteil, dass es automatisch die Präferenzen eines Benutzers berücksichtigt. Firefox und Safari erlauben es Benutzern, Videos automatisch abzuspielen zu blockieren, auch wenn sie keinen Ton haben. Hier sind zum Beispiel die Einstellungen in Firefox:

Der Benutzer kann sich immer noch entscheiden, ein bestimmtes Video anzusehen, indem er mit der rechten Maustaste darauf klickt und im Menü „Abspielen“ auswählt, oder er kann die automatische Wiedergabe für alle Videos auf einer bestimmten Website aktivieren.

Für Benutzer, die die automatische Wiedergabe nicht deaktiviert haben, ist es schön, die Möglichkeit zu haben, eine Animation anzuhalten, wenn Sie sie als störend oder ablenkend empfinden (ein Benutzer kann immer noch mit der rechten Maustaste auf das Menü klicken, um die Pause-Option aufzurufen, wenn keine Videosteuerung angezeigt wird). Erfolgskriterium 2.2.2 Pause, Stopp, Ausblenden der WCAG-Richtlinien für Barrierefreiheit besagt:
Für alle sich bewegenden, blinkenden oder scrollenden Informationen, die (1) automatisch starten, (2) länger als fünf Sekunden dauern und (3) parallel zu anderen Inhalten angezeigt werden, gibt es einen Mechanismus für den Benutzer, diese anzuhalten, zu stoppen oder auszublenden, es sei denn, die Bewegung, das Blinken oder das Scrollen ist Teil einer Aktivität, bei der es unerlässlich ist.
Mit dem <video>-Element erfüllen Sie dieses Kriterium ohne zusätzlichen Entwicklungsaufwand.
Es gibt auch eine Benutzereinstellung „Bewegung reduzieren“, die Entwickler berücksichtigen können, indem sie CSS- und JavaScript-Webanimationen reduzieren oder entfernen.

Sie können es auch verwenden, um ein statisches Bild anstelle einer Animation anzuzeigen. Dies erfordert zusätzlichen Code zur Implementierung – und Sie müssen zusätzlich zu Ihrem animierten Bild ein statisches Bild hosten.
<picture>
<source
srcset="nyancat.avifs"
type="image/avif"
media="(prefers-reduced-motion: no-preference)"
/>
<img src="nyancat.png" alt="Nyan cat" width="250" height="250" />
</picture>
Es gibt noch einen weiteren Nachteil. Wenn Sie das <picture>-Element auf diese Weise verwenden und der Benutzer „Bewegung reduzieren“ ausgewählt hat, gibt es keine Möglichkeit für ihn, die Animation zu sehen. Nur weil ein Benutzer *weniger* Bewegung bevorzugt, heißt das nicht, dass er *gar keine* will – er möchte vielleicht trotzdem die Möglichkeit haben, sie gelegentlich zu aktivieren und anzusehen. Im Gegensatz zum <video>-Element nimmt die Anzeige eines statischen Bildes diese Wahl weg.
Prüfung auf progressive Verbesserung
Wenn Sie überprüfen möchten, ob Ihr <picture>-Code ordnungsgemäß funktioniert und Fallback-Bilder angezeigt werden, können Sie die Registerkarte Rendering in den Chrome DevTools verwenden, um die Unterstützung für AVIF- und WebP-Bildformate zu deaktivieren. Da alle Browser WebP jetzt unterstützen, ist dies eine ziemlich praktische Funktion.

Während es normalerweise die beste Option ist, Animationen mit CSS, JavaScript, DOM-Elementen, Canvas und SVG zu erstellen, werden sie mit neuen Bild- und Videoformaten, die kleinere Dateien als bisher möglich bieten, zu einer nützlichen Option für UI-Animationen (anstatt nur für Nyan-Cat-Loops). Für einmalige Animationen wird eine AVIF-Datei wahrscheinlich performanter sein als der Import einer ganzen Animationsbibliothek.

Lottie
After Effects ist ein beliebtes Animationswerkzeug von Adobe. Mit einer Erweiterung namens Bodymovin können Sie Animationsdaten aus After Effects als JSON-Datei exportieren.
Dann gibt es noch Lottie, eine Open-Source-Animationsbibliothek von Airbnb, die diese JSON-Datei nehmen und als Animation rendern kann auf verschiedenen Plattformen. Die Bibliothek ist für native iOS-, Android- und React-Native-Anwendungen sowie für das Web verfügbar. Sie können Beispiele von Google Home, Target und Walgreens unter anderem sehen.
Nachdem Sie die Abhängigkeit eingebunden haben, müssen Sie ein kleines Stück JavaScript-Code schreiben, um die Animation zum Laufen zu bringen.
<div id="lottie"></div>
const animation = bodymovin.loadAnimation({
container: document.getElementById('lottie'),
path: 'myAnimation.json',
renderer: 'svg',
loop: true,
autoplay: true,
})
Sie können diese Einstellungen optional so ändern, dass sie nur nach einem Ereignis abgespielt werden.
const lottieContainer = document.getElementById('lottie');
const animation = bodymovin.loadAnimation({
container: lottieContainer,
path: 'myAnimation.json',
renderer: 'svg',
loop: true,
autoplay: false,
})
// Play the animation on hover
lottieContainer.addEventListener('mouseover', () => {
animation.play();
});
// Stop the animation after playing once
animation.addEventListener('loopComplete', function() {
animation.stop();
});
Hier ist ein süßes Beispiel einer Katze, die auf einer Tastatur tippt, das ich von Lottiefiles.com habe (die Website ist eine nützliche Website zum Vorschauen Ihrer eigenen Lottie-JSON-Datei-Animationen, anstatt After Effects installieren zu müssen, sowie zum Finden von Animationen von anderen Kreativen).
Sie können auch programmatisch eine Animation rückwärts abspielen und die Wiedergabegeschwindigkeit ändern.
Wenn Sie sich für die Verwendung von Lottie entscheiden, gibt es ein Figma-Plugin für Lottie, aber es konvertiert nur JSON-Dateien in .gif, damit sie im Prototyping-Modus angezeigt werden können.
Und was ist mit Lotties Leistung? Es gibt die Größe der Bibliothek – 254,6 KB (63,8 gzippt) – und die Größe der JSON-Datei zu berücksichtigen. Hinzu kommt die Anzahl der DOM-Elemente, die für die SVG-Teile erstellt werden. Wenn Sie auf dieses Problem stoßen, bietet Lottie die Möglichkeit, auf ein HTML <canvas> zu rendern, aber Sie benötigen eine andere Version der JavaScript-Bibliothek.
const animation = bodymovin.loadAnimation({
container: document.getElementById('lottie'),
path: 'myAnimation.json',
renderer: 'canvas',
})
Lottie ist kein vollständiger Ersatz für GIFs. Obwohl After Effects selbst oft mit Videoclips verwendet wird und Lottie auf ein HTML <canvas> rendern kann und ein Canvas Videoclips abspielen kann, würden Sie eine Lottie-Datei nicht für diesen Zweck verwenden. Lottie ist für fortschrittliche 2D-Animationen gedacht, nicht so sehr für Videos. Es gibt andere Tools zur Erstellung komplexer Webanimationen mit einer GUI wie SVGator und Rive, aber ich habe sie selbst nicht ausprobiert. 🤷♂️
Ich wünschte, es gäbe eine TL;DR für diesen Artikel. Vorerst gibt es zumindest keinen klaren Gewinner…
Ich verstehe den Teil über „Die Vorteile von Bildern“ und den
window.matchMedia-Hack nicht ganz. Das<source>-Tag innerhalb eines<video>unterstützt auch dasmedia-Attribut, genau wie das<picture>-Element. Sie können also Video im Hell-/Dunkelmodus ohne all das machen.Das wird in keinem anderen Browser als Safari unterstützt. https://www.filamentgroup.com/lab/video-with-sizes/
Dass Firefox die Unterstützung für animiertes AVIF nicht aufgenommen hat, fühlt sich wie eine echte verpasste Gelegenheit an, über GIFs mit einem Bildformat hinauszugehen.
Es scheint also, dass GIF immer noch das einzige garantierte unterstützte Format ist.
Alle Videoformate haben Unterstützungsprobleme oder die automatische Wiedergabe könnte ausgeschaltet sein.
Fehlt mir etwas?
Ja, die automatische Wiedergabe ist für mich meistens furchtbar.
Kleine GIFs sind es wirklich, die ich zu verwenden versuche, um sie für jeden möglichen Benutzer so leicht wie möglich zu halten.