Appearance
Kapitel 21: Animationen**
🎬 Lernziel: Meistern Sie CSS-Animationen, um komplexe dynamische Effekte mit Keyframes zu erstellen.
21.1 Definition von Animationen
💡 Was sind CSS-Animationen?
CSS-Animationen ermöglichen es, Elemente über Keyframes zu animieren. Eine Animation besteht aus zwei Teilen:
- @keyframes - Definiert die Animationsschritte (von → bis)
- Animations-Eigenschaften - Steuert, wie die Animation abläuft
🎯 Grundlegende Struktur
css
/* 1. Definieren der Keyframes */
@keyframes mein-animation {
from {
/* Startzustand */
}
to {
/* Endzustand */
}
}
/* 2. Animations-Eigenschaften anwenden */
.element {
animation-name: mein-animation;
animation-duration: 2s;
}21.2 Keyframes (@keyframes)
💡 Was sind Keyframes?
Keyframes definieren den Startzustand, den Endzustand und die Zwischenzustände einer Animation.
🎯 Syntax von @keyframes
css
/* Methode 1: from → to */
@keyframes farbwechsel {
from {
background-color: rot;
}
to {
background-color: blau;
}
}
/* Methode 2: Prozentangabe (0% → 100%) */
@keyframes farbwechsel {
0% {
background-color: rot;
}
50% {
background-color: gelb;
}
100% {
background-color: blau;
}
}📝 Beispiel 1: Einfache Animation (Farbe von rot zu blau)
html
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Einfache Animation</title>
<style>
/* Definieren der Keyframes */
@keyframes farbwechsel {
from {
background-color: red;
}
to {
background-color: blue;
}
}
/* Animations-Eigenschaften anwenden */
.animiert-box {
width: 100px;
height: 100px;
background-color: red;
animation-name: farbwechsel;
animation-duration: 2s;
}
</style>
</head>
<body>
<div class="animiert-box"></div>
</body>
</html>Erklärung:
@keyframes farbwechsel- Definiert eine Animation namens "farbwechsel"from- Startzustand (0%)to- Endzustand (100%)animation-name: farbwechsel- Wendet die Animation auf das Element ananimation-duration: 2s- Die Animation dauert 2 Sekunden
21.3 Animations-Eigenschaften
🎯 Wichtige Animations-Eigenschaften
css
.element {
/* Name der Animation */
animation-name: mein-animation;
/* Dauer der Animation */
animation-duration: 2s;
/* Anzahl der Wiederholungen (unendlich: infinite) */
animation-iteration-count: 3;
/* Verzögerung vor Animationsbeginn */
animation-delay: 0.5s;
/* Geschwindigkeitskurve */
animation-timing-function: ease;
/* Richtung der Animation */
animation-direction: normal; /* oder: reverse, alternate */
/* Verhalten nach Ende der Animation */
animation-fill-mode: forwards; /* Bleibt im Endzustand */
}📝 Beispiel 2: Animation mit mehreren Eigenschaften
html
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Animation mit mehreren Eigenschaften</title>
<style>
@keyframes bewegen {
0% {
transform: translateX(0px);
}
100% {
transform: translateX(200px);
}
}
.animiert-box {
width: 100px;
height: 100px;
background-color: red;
animation-name: bewegen;
animation-duration: 2s;
animation-iteration-count: infinite; /* Unendlich wiederholen */
animation-direction: alternate; /* Hin und zurück */
}
</style>
</head>
<body>
<div class="animiert-box"></div>
</body>
</html>Erklärung:
animation-iteration-count: infinite- Die Animation wiederholt sich unendlich oftanimation-direction: alternate- Die Animation läuft abwechselnd vorwärts und rückwärts
21.4 Häufige Animationseffekte
🎯 Effekt 1: Drehen
css
@keyframes drehen {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.drehendes-element {
animation: drehen 2s infinite linear;
}🎯 Effekt 2: Verschieben
css
@keyframes verschieben {
0% {
transform: translateX(0px);
}
100% {
transform: translateX(200px);
}
}
.verschiebendes-element {
animation: verschieben 2s ease;
}🎯 Effekt 3: Skalieren
css
@keyframes skalieren {
0% {
transform: scale(1);
}
50% {
transform: scale(1.5);
}
100% {
transform: scale(1);
}
}
.skalierendes-element {
animation: skalieren 2s ease;
}🎯 Effekt 4: Einblenden
css
@keyframes einblenden {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
.einblendendes-element {
animation: einblenden 2s ease;
}21.5 Neueinsteiger-Vereinfachung: Häufige Animationsvorlagen
🎨 Vorlage 1: Pulsierende Schaltfläche
css
@keyframes pulsieren {
0% {
transform: scale(1);
}
50% {
transform: scale(1.1);
}
100% {
transform: scale(1);
}
}
.pulsierender-button {
animation: pulsieren 1.5s infinite ease-in-out;
}🎨 Vorlage 2: Hüpfende Ladung
css
@keyframes hüpfen {
0%, 100% {
transform: translateY(0px);
}
50% {
transform: translateY(-20px);
}
}
.hüpfendes-element {
animation: hüpfen 1s infinite ease-in-out;
}🎨 Vorlage 3: Gleitender Text
css
@keyframes gleiten {
0% {
transform: translateX(-100%);
}
100% {
transform: translateX(100%);
}
}
.gleitender-text {
animation: gleiten 5s infinite linear;
}21.6 Praxis: Drehende Icons, einblendende Tooltips, Scroll-Animationen
🎨 Praxis 1: Drehendes Icon
html
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Drehendes Icon</title>
<style>
@keyframes drehen {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.drehendes-icon {
width: 50px;
height: 50px;
background-color: #4CAF50;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-weight: bold;
animation: drehen 2s infinite linear;
}
</style>
</head>
<body>
<div class="drehendes-icon">↻</div>
</body>
</html>🎨 Praxis 2: Einblendender Tooltip
html
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Einblendender Tooltip</title>
<style>
@keyframes tooltip-einblenden {
0% {
opacity: 0;
transform: translateY(10px);
}
100% {
opacity: 1;
transform: translateY(0px);
}
}
.tooltip {
position: relative;
display: inline-block;
}
.tooltip .tooltip-text {
visibility: hidden;
width: 120px;
background-color: black;
color: white;
text-align: center;
padding: 5px;
border-radius: 4px;
position: absolute;
z-index: 1;
bottom: 125%;
left: 50%;
margin-left: -60px;
}
.tooltip:hover .tooltip-text {
visibility: visible;
animation: tooltip-einblenden 0.3s ease;
}
</style>
</head>
<body>
<div class="tooltip">
Maus hier rüberbewegen
<span class="tooltip-text">Tooltip-Text!</span>
</div>
</body>
</html>🎨 Praxis 3: Scroll-Animation (Elemente erscheinen beim Scrollen)
css
@keyframes scroll-einblenden {
0% {
opacity: 0;
transform: translateY(50px);
}
100% {
opacity: 1;
transform: translateY(0px);
}
}
.scroll-element {
opacity: 0;
}
.scroll-element.sichtbar {
animation: scroll-einblenden 0.5s ease forwards;
}✅ Zusammenfassung
In diesem Kapitel haben Sie gelernt:
- ✅ Definition von Animationen - Kombination aus @keyframes und Animations-Eigenschaften
- ✅ Keyframes - Definieren von Start-, Zwischen- und Endzuständen
- ✅ Animations-Eigenschaften - Steuern von Dauer, Wiederholungen, Verzögerung
- ✅ Häufige Effekte - Drehen, Verschieben, Skalieren, Einblenden
- ✅ Praxis - Drehende Icons, Tooltips, Scroll-Animationen
🎯 Übung
Übung 1: Erstellen Sie eine Animation, die ein Element von links nach rechts bewegt.
Übung 2: Erstellen Sie eine Animation, die ein Element pulsieren lässt.
Übung 3: Erstellen Sie eine Animation, die ein Element einblendet.
📚 Nächstes Kapitel
Im nächsten Kapitel lernen wir Schatten und Filter (box-shadow, text-shadow, filter), um Elemente dreidimensionaler und hochwertiger wirken zu lassen.
[Weiter zu Kapitel 22: Schatten & Filter →]
