Startposition eines Objekts vor Beginn der Pfadanimation anpassen
- Einleitung
- Startposition bei CSS-Pfadanimationen festlegen
- Startposition bei JavaScript-basierten Pfadanimationen setzen
- Wichtige Hinweise
- Zusammenfassung
Einleitung
Wenn man eine Pfadanimation in CSS oder JavaScript erstellt, startet das animierte Objekt häufig am Anfang des definierten Pfades. Manchmal ist es jedoch notwendig, die Startposition des Objekts gezielt vor Beginn der eigentlichen Animation zu setzen, beispielsweise um visuelle Sprünge zu vermeiden oder eine genaue Positionierung sicherzustellen. Dies wird erreicht, indem man die Anfangsposition des Objekts außerhalb oder am Anfang des Animationspfades manuell festlegt.
Startposition bei CSS-Pfadanimationen festlegen
Bei CSS-basierten Pfad-Animationen, etwa mit offset-path und offset-distance, definiert offset-distance den Fortschritt des Objekts entlang des Pfades. Der Wert 0% entspricht dem Startpunkt des Pfades, 100% dem Endpunkt. Um die Startposition vor der Animation zu bestimmen, setzt man im initialen Zustand des Objekts (zum Beispiel bei 0% der Keyframe-Animation) den Wert von offset-distance manuell.
Wenn das Objekt also nicht genau am Anfang des Pfades loslaufen soll, sondern an einer bestimmten Stelle des Pfades, kann man beispielsweise mit offset-distance: 20% arbeiten.
Vor Beginn der Animation, also bevor die Keyframes einsetzen, sollte dieser Wert im normalen CSS-Status gesetzt werden, damit das Objekt an der gewünschten Startposition liegt.
Ein einfaches Beispiel für die Positionsbestimmung vor Animationseintritt wäre:
.my-object { offset-path: path("M0,0 L100,0"); offset-distance: 20%;}@keyframes moveAlongPath { 0% { offset-distance: 20%; } 100% { offset-distance: 100%; }}Hier startet das Objekt am 20%-Punkt des Pfades und bewegt sich bis zum Ende.
Startposition bei JavaScript-basierten Pfadanimationen setzen
Wenn die Pfadanimation über JavaScript gesteuert wird, beispielsweise mit requestAnimationFrame und einer eigenen Berechnung der Position anhand der Pfad-Länge, legt man die Startposition fest, indem man die Anfangskoordinaten des Objekts auf die Koordinaten des Pfades an der gewünschten Stelle setzt.
Dazu benutzt man meist die Methode getPointAtLength() für SVG-Pfade, um die genaue Position entlang des Pfades zu ermitteln. Bevor die Animation startet, positioniert man das Objekt z.B. mit:
const path = document.querySelector(path);const length = path.getTotalLength();const startPoint = path.getPointAtLength(length * 0.2); // Start bei 20% Längeobject.style.transform = `translate(${startPoint.x}px, ${startPoint.y}px)`;So befindet sich das Objekt vor Beginn der Animation an der richtigen Stelle. Erst im Animationsloop wird diese Position dann weiter verändert.
Wichtige Hinweise
Es ist entscheidend, dass die Startposition vor der Animation IM CSS oder IM DOM illustriert wird, damit keine plötzlichen Verschiebungen auftreten, sobald die Animation beginnt. Andernfalls springt das Objekt plötzlich an den Startpunkt des Pfades.
Außerdem sollten die Ursprungspunkte (Transform-Origin) und mögliche Offset- oder Margin-Eigenschaften beachtet werden, damit die Positionierung genau passt.
Zusammenfassung
Die Anpassung der Startposition vor der Animation erfolgt durch explizites Setzen der Anfangskoordinate am Pfad, sei es mit CSS-Eigenschaften wie offset-distance oder per JavaScript-Auslesung der Position entlang eines SVG-Pfades. Dadurch lässt sich eine flüssige Animation ohne unerwünschte Sprünge sicherstellen.