Mehr zu: publixx

Publixx - Bild Animation

🎬 Ken Burns Animation in Publixx

Die Ken Burns Animation erzeugt einen sanften Zoom-Effekt auf Bildern, benannt nach dem Dokumentarfilmer Ken Burns, der diese Technik populär machte.

1. Grundprinzip

Start Ende
Zoom In
scale(1) → scale(1.5)
Start Ende
Zoom Out
scale(1.5) → scale(1)

2. Fokuspunkt (transform-origin)

Der Fokuspunkt bestimmt, wohin der Zoom gerichtet ist. CSS: transform-origin: X% Y%

25% 25% 50% 50% 75% 75% 0% 0% 100% 0% 0% 100% 100% 100%
Fokuspunkt Beschreibung CSS
50% 50% Mitte (Standard) transform-origin: center
0% 0% Oben Links transform-origin: top left
100% 50% Rechte Mitte transform-origin: right center
65% 30% Benutzerdefiniert (z.B. Gesicht) transform-origin: 65% 30%

3. Architektur-Übersicht

Datenfluss: Editor → Export → Player 🖥️ Editor section-animation.js • Fokuspunkt-Picker • Zoom-Slider • Animation-Richtung → renderCanvas({ liveAnimation: true }) ⚙️ render-media.js if (state.liveAnimation) { // Live: @keyframes erstellen // Animation sofort starten } else { // Export: data-Attribute } 📦 Data-Attribute data-zoom-animation="in" data-zoom-level="1.5" data-zoom-duration="5" data-focal-x="65" data-focal-y="40" 📤 Export Module playerexport.js • data-Attribute behalten • Start-Zustand setzen fullscreenplayer.js • renderCanvas() ohne liveAnimation ▶️ Player Runtime startKenBurnsAnimations(container) 1. data-Attribute auslesen 2. @keyframes dynamisch erstellen 3. Animation starten (forwards) 4. Finalen Zustand fixieren ✨ Ergebnis Sanfter Zoom zum Fokuspunkt ✓ Kein Zurückspringen ✓ Bei Seitenwechsel neu

4. CSS @keyframes Animation

/* Dynamisch generierte Animation */
@keyframes kenBurns_0 {
0% { transform: scale(1); }
100% { transform: scale(1.5); }
}

/* Auf Bild angewendet */
img {
transform-origin: 65% 40%;
animation: kenBurns_0 5s ease-in-out forwards;
}

Wichtige Eigenschaften:

forwards

Behält den Endzustand nach Animation bei. Ohne "forwards" springt das Bild zurück!

ease-in-out

Sanfter Start und Ende der Animation. Alternativen: linear, ease, ease-in, ease-out

transform-origin

Bestimmt den Mittelpunkt der Transformation. Der Zoom "zielt" auf diesen Punkt.

5. Das "Zurückspringen" Problem & Lösung

❌ Problem (vorher) 1. Animation läuft (5 Sekunden) 2. setTimeout entfernt @keyframes 3. Browser: "Keine Animation mehr?" 4. → Bild springt auf Originalzustand! img.style.transform = "" (implizit) ✓ Lösung (jetzt) 1. Animation läuft (5 Sekunden) 2. setTimeout nach Animation: img.style.transform = 'scale(1.5)' img.style.animation = 'none' 3. Dann erst @keyframes entfernen 4. → Bild bleibt im Endzustand!

7. Export-Matrix

Export Animation Filter Methode
🖥️ Editor ✅ Live ✅ CSS renderCanvas({ liveAnimation: true })
🎬 Fullscreen-Player ✅ Bei Wechsel ✅ CSS startKenBurnsAnimations(container)
📤 Player Export ✅ Bei Wechsel ✅ CSS startKenBurnsAnimations(pageIndex)
🌐 Website Export ✅ CSS ✅ CSS generateKenBurnsCSS(clone)
📄 PDF Export ❌ Statisch ✅ Canvas renderFilteredImage()
📊 PPTX Export ❌ Statisch ✅ Canvas renderFilteredImage()
🖼️ Image Export ❌ Statisch state.testMode = true

8. Beteiligte Dateien

Ken Burns Animation section-animation .js – UI/Inspector rendercanvas .js – liveAnimation render-media .js – Rendering fullscreenplayer .js – Live-Player playerexport .js – HTML Export export-utils .js – CSS Generator