- Dynamic Sidebar mit window.COURSES_MANIFEST für 13 Kurse (216 Kapitel) - Kurswechsler Dropdown mit Direktnavigation - Fortschrittsanzeige mit Solved-Checkmarks (✓) aus localStorage - Responsive Off-Canvas Drawer mit Floating Action Button (☰ Kapitel) & Backdrop auf Mobile/Tablets - Web-IDE Topbar Drawer-Button (☰ Kapitel) für unterbrechungsfreien Vollbild-Editor - Saubere Bereinigung redundanter statischer Legacy-Sidebars |
||
|---|---|---|
| .. | ||
| aufgabe.html | ||
| index.html | ||
| musterloesung.html | ||
| README.md | ||
| test_aufgabe.js | ||
CSS 12: Transitions, Transforms & Keyframes (Animationen)
Sanfte Bewegungen und visuelle Reaktionen machen Web-Oberflächen lebendig und intuitiv. In diesem Modul lernst du, wie du mit CSS Transitions, 2D/3D-Transformationen und @keyframes-Animationen hochwertige Interaktionen gestaltest.
🎯 Lernziele
- CSS Transitions: Weiche Zustandswechsel mit
transition: transform 0.3s ease, box-shadow 0.3s ease. - Hardware-beschleunigte Transforms:
transform: translateY(-8px) scale(1.02) rotate(2deg). - Keyframe-Animationen: Wiederholende Zyklen wie
pulse,floatundspinmit@keyframes. - Animations-Parameter:
animation: float 3s infinite ease-in-out,animation-fill-mode. - Barrierefreiheit (A11y): Nutzerpräferenzen mit
@media (prefers-reduced-motion: reduce)respektieren.
🧠 Die Kernkonzepte im Detail
1. CSS Transitions
Transitions animieren den Übergang zwischen zwei Zuständen (z. B. :hover, :focus, :active):
.card {
/* Eigenschaft | Dauer | Easing-Funktion */
transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.3s ease;
}
.card:hover {
transform: translateY(-6px);
box-shadow: 0 12px 24px -4px rgba(0, 0, 0, 0.3);
}
Performance-Tipp: Animiere fast ausschließlich
transformundopacity, da diese direkt auf der Grafikkarte (GPU) berechnet werden und keinen teuren Layout-Reflow auslösen.
2. 2D/3D Transformations (transform)
translate(x, y)/translateY(-10px): Verschiebung im Raum.scale(1.05): Vergrößerung/Verkleinerung.rotate(45deg): Rotation.skew(10deg): Verzerrung.
Mehrere Werte können kombiniert werden: transform: translateY(-5px) scale(1.02);.
3. Komplexe Animationen mit @keyframes
Wenn eine Animation mehr als zwei Zustände hat oder dauerhaft in einer Schleife laufen soll:
@keyframes pulse {
0% {
transform: scale(1);
opacity: 1;
}
50% {
transform: scale(1.15);
opacity: 0.7;
}
100% {
transform: scale(1);
opacity: 1;
}
}
.badge-live {
animation: pulse 2s infinite ease-in-out;
}
4. Barrierefreiheit mit prefers-reduced-motion
Einige Nutzer leiden unter Schwindel oder vestibulären Störungen. Wir schalten Bewegungen für sie ab:
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}
🎯 Aufgabenstellung in aufgabe.html
- TEILZIEL 1: Versehe
.interactive-cardmit einer sanften Transition:transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease. - TEILZIEL 2: Implementiere
.interactive-card:hovermittransform: translateY(-8px) scale(1.02)und verstärktembox-shadow. - TEILZIEL 3: Erstelle eine
@keyframes pulseAnimation und binde sie mitanimation: pulse 2s infinite ease-in-outan.live-indicatoran. - TEILZIEL 4: Erstelle eine
@keyframes floatAnimation und binde sie mitanimation: float 4s infinite ease-in-outan.floating-badgean. - TEILZIEL 5: Füge eine Barrierefreiheits-Regel
@media (prefers-reduced-motion: reduce)hinzu.
Teste deine Animationen mit test_aufgabe.js!