Zum Inhalt springen
DE

300 Icons · Lottie JSON · MIT-Lizenz

Kostenlose Lottie-Icons

Jedes useAnimations-Icon ist eine Standard-Lottie-JSON-Animation und läuft damit in jedem Lottie-Player: lottie-web im Web, lottie-ios, lottie-android, Flutter und React Native. Die Dateien sind unter der MIT-Lizenz kostenlos, ohne Registrierung, und liegen unter stabilen URLs mit aktiviertem CORS. Sie können sie also direkt laden oder in Ihr Projekt herunterladen.

Alle 300 Icons →

Dateien und URLs

Jedes Icon hat eine Seite unter /icons/<id> mit Vorschau und Downloads (nur auf Englisch). Die Dateien selbst:

https://useanimations.com/icons/<id>.json          # Lottie-JSON-Animation
https://useanimations.com/icons/<id>.zip           # JSON und statische SVGs
https://useanimations.com/icons/<id>/<state>.svg   # statisches SVG je Zustand
https://useanimations.com/icons.json               # Katalog aller Icons

icons.json listet jedes Icon mit ID, Titel, Kategorie, Keywords, Interaktion, Größe, Dauer und Datei-URLs auf. So lassen sich Icons per Skript nach Stichwort auswählen, oder ein Coding-Agent sucht eines aus. Die Lottie-Dateien sind im Median 2 kB groß.

Web: lottie-web

Der Referenz-Player von Airbnb. Laden Sie ihn von einem CDN, geben Sie ihm eine Icon-URL und wählen Sie den SVG-Renderer: Damit bleibt das Icon gestochen scharf und lässt sich per CSS umfärben. Nutzen Sie den vollständigen Build (lottie.min.js), denn der Light-Build ignoriert Expressions.

<div id="icon" style="width: 48px; height: 48px"></div>

<script src="https://cdn.jsdelivr.net/npm/lottie-web@5.13.0/build/player/lottie.min.js"></script>
<script>
  lottie.loadAnimation({
    container: document.getElementById('icon'),
    renderer: 'svg',
    loop: true,
    autoplay: true,
    path: 'https://useanimations.com/icons/loading.json',
  });
</script>
Textfarbe übernehmen (SVG-Renderer)
#icon path[stroke^='rgb']:not([stroke='rgb(255,255,255)']) { stroke: currentColor; }
#icon path[fill='rgb(0,0,0)'] { fill: currentColor; }

Web: Interaktionen für Hover und Klick

lottie-web kann abspielen und stoppen, die Interaktionen bauen Sie aber selbst. Hier ist der Klick-Toggle des Menü-Icons mit Unterstützung für reduzierte Bewegung; alle Interaktionen folgen demselben Muster, und die React-Komponente weiter unten erledigt das alles für Sie.

import lottie from 'lottie-web'; // npm install lottie-web

const el = document.querySelector('#menu-button');
const a = lottie.loadAnimation({ container: el, renderer: 'svg', loop: false, autoplay: false, path: 'https://useanimations.com/icons/menu.json' });
const motion = matchMedia('(prefers-reduced-motion: reduce)');
let isOn = true; // Frame 0 is on; the final frame is off.
el.addEventListener('click', () => { isOn = !isOn; if (motion.matches) a.goToAndStop(isOn ? 0 : a.totalFrames - 1, true); else { a.setDirection(isOn ? -1 : 1); a.play(); } });

Web: dotLottie-Webkomponente

Der Player von LottieFiles rendert mit einer WebAssembly-Engine in ein Canvas und spielt neben .lottie-Dateien auch reines Lottie JSON ab. Ein Canvas übernimmt die Farben aus der Datei, die Icons bleiben also schwarz, solange Sie das JSON nicht umfärben.

<script type="module" src="https://cdn.jsdelivr.net/npm/@lottiefiles/dotlottie-wc@0.10.0/dist/dotlottie-wc.js"></script>

<dotlottie-wc src="https://useanimations.com/icons/loading.json" autoplay loop style="width: 48px; height: 48px"></dotlottie-wc>
Oder die JavaScript-API: npm install @lottiefiles/dotlottie-web
import { DotLottie } from '@lottiefiles/dotlottie-web';

new DotLottie({
  canvas: document.querySelector('#icon-canvas'),
  src: 'https://useanimations.com/icons/loading.json',
  autoplay: true,
  loop: true,
});

React: react-useanimations

Kein Lottie-Player nötig: Das Paket bringt einen eigenen Player mit 8 kB mit, spielt die Interaktion jedes Icons ab, übernimmt die Textfarbe und berücksichtigt reduzierte Bewegung. Jedes Icon ist ein eigenes Modul, ausgeliefert werden also nur die, die Sie importieren.

// npm install react-useanimations
import UseAnimations from 'react-useanimations';
import loading from 'react-useanimations/lib/loading';

<UseAnimations animation={loading} size={48} />

React Native: lottie-react-native

Binden Sie das JSON für die Offline-Nutzung mit require() ein oder laden Sie es über seine URL.

// npm install lottie-react-native
import LottieView from 'lottie-react-native';

<LottieView
  source={{ uri: 'https://useanimations.com/icons/loading.json' }} // or require('./loading.json')
  autoPlay
  loop
  style={{ width: 48, height: 48 }}
/>

iOS: lottie-ios (SwiftUI)

Fügen Sie das Paket https://github.com/airbnb/lottie-spm.git mit dem Swift Package Manager hinzu und legen Sie das JSON dann in Ihr Bundle oder laden Sie es über seine URL.

import Lottie
import SwiftUI

struct LoadingIcon: View {
  var body: some View {
    // Bundled file: LottieView(animation: .named("loading"))
    LottieView {
      await LottieAnimation.loadedFrom(url: URL(string: "https://useanimations.com/icons/loading.json")!)
    }
    .looping()
    .frame(width: 48, height: 48)
  }
}

Android: lottie-android (Jetpack Compose)

Fügen Sie com.airbnb.android:lottie-compose hinzu (oder com.airbnb.android:lottie für Views). Für die Offline-Nutzung mit LottieCompositionSpec.RawRes legen Sie das JSON in res/raw ab.

// build.gradle.kts: implementation("com.airbnb.android:lottie-compose:6.7.1")
@Composable
fun LoadingIcon() {
  val composition by rememberLottieComposition(
    LottieCompositionSpec.Url("https://useanimations.com/icons/loading.json")
  )
  LottieAnimation(
    composition = composition,
    iterations = LottieConstants.IterateForever,
    modifier = Modifier.size(48.dp),
  )
}

Flutter: lottie

Das Paket lottie ist ein reiner Dart-Player für Android, iOS, Web und Desktop.

// pubspec.yaml: lottie: ^3.6.1
import 'package:lottie/lottie.dart';

Lottie.network(
  'https://useanimations.com/icons/loading.json',
  width: 48,
  height: 48,
) // or Lottie.asset('assets/loading.json')

Icons mit Expressions

2 Icons nutzen After-Effects-Expressions (loopOut oder wiggle). Im Web spielen Sie diese mit dem vollständigen Build von lottie-web ab, nicht mit lottie_light. Native Player werten keine Expressions aus; testen Sie diese Icons daher unter iOS, Android und Flutter oder wählen Sie ein anderes. react-useanimations spielt sie so ab, wie sie gestaltet wurden.

Häufige Fragen

Sind diese Lottie-Icons für die kommerzielle Nutzung kostenlos?

Ja. Alle 300 Lottie-Icons stehen unter der MIT-Lizenz: Sie dürfen sie in privaten und kommerziellen Projekten nutzen, verändern und weitergeben, ohne Namensnennung und ohne Konto für den Download.

In welchem Format liegen die Lottie-Dateien vor?

Standard-Lottie-JSON (das Bodymovin-Format) ausschließlich mit Formebenen: keine Bilder, Schriften oder externen Assets. Jedes Icon ist auf einer Zeichenfläche von 24 oder 32 px gezeichnet, lässt sich beliebig skalieren und ist 1 kB bis 14 kB groß, im Median 2 kB.

Brauche ich lottie-web, um die Icons in React zu nutzen?

Nein. react-useanimations hat einen eigenen Player mit 8 kB ohne Abhängigkeiten: Sie installieren ein Paket und importieren die Icons, die Sie brauchen. lottie-web ist nur außerhalb von React nötig, also auf reinen Webseiten oder in anderen Frameworks.

Welche Icons brauchen den vollständigen Build von lottie-web?

2 Icons nutzen After-Effects-Expressions (loopOut oder wiggle): Error und Twitter. Im Web brauchen sie den vollständigen Build von lottie-web, denn lottie_light ignoriert Expressions. Auch native Player (lottie-ios, lottie-android, das Flutter-Paket lottie) werten keine Expressions aus, dort bewegen sich diese Icons also möglicherweise anders.

Kann ich die Farbe eines Lottie-Icons ändern?

Im Web schreibt der SVG-Renderer von lottie-web die Farben als Attribute, eine CSS-Regel für die Pfade färbt das Icon also um. Native Player nutzen ihre APIs für dynamische Eigenschaften: ColorValueProvider unter iOS, LottieProperty.COLOR und STROKE_COLOR unter Android und ValueDelegate.color in Flutter.