====== CSS Transitionen, Transformationen und Animationen ====== Diese Dokumentation behandelt die Grundlagen zur Erstellung von reibungslosen Übergängen (Transitions), Formveränderungen (Transforms) und komplexen Keyframe-Animationen mit CSS basierend auf den Unterlagen von Jennifer Robbins[cite: 15]. ===== 1. CSS Transitionen (Übergänge) ===== CSS-Transitionen ermöglichen einen stufenlosen Übergang zwischen zwei Zuständen eines Elements durch automatische Zwischenbildberechnung (Tweening)[cite: 15]. ==== Einzeleigenschaften ==== * **transition-property:** Bestimmt die zu ändernde CSS-Eigenschaft (z. B. ''background-color'', ''all'', ''none'')[cite: 15]. * **transition-duration:** Gibt die Dauer des Übergangs an (in Sekunden ''s'' oder Millisekunden ''ms'')[cite: 15]. * **transition-timing-function:** Steuert den Verlauf und die Beschleunigung der Animation (z. B. ''ease'', ''linear'', ''ease-in'', ''ease-out'', ''ease-in-out'', ''cubic-bezier()'', ''steps()'')[cite: 15]. * **transition-delay:** Legt eine Verzögerung fest, bevor der Übergang startet[cite: 15]. ==== Kurzschreibweise & Mehrfachübergänge ==== Mehrere Eigenschaften werden durch Kommas getrennt[cite: 15]. Innerhalb einer Kurzschreibweise muss die Dauer stets vor der Verzögerung stehen[cite: 15]. /* Kurzschreibweise für einzelne Eigenschaft */ .smooth { background-color: mediumblue; transition: background-color 0.3s ease-in-out 0.2s; } /* Mehrere Eigenschaften gleichzeitig */ .multi-smooth { transition: background-color 0.3s ease-out 0.2s, color 2s ease-in, letter-spacing 0.3s ease-out; } /* Alle Eigenschaften vereinheitlichen */ .all-smooth { transition: all 0.2s ease-in-out; } ===== 2. CSS Transformationen (2D & 3D) ===== Die Eigenschaft ''transform'' verändert Form, Größe und Position eines Elements beim Rendering[cite: 15]. Sie lässt sich ideal mit Transitionen kombinieren[cite: 15]. ==== Transformationsfunktionen ==== * **rotate(deg):** Dreht das Element um den angegebenen Winkel[cite: 15]. * **translate(x, y):** Verschiebt das Element auf der X- und Y-Achse[cite: 15]. * **scale(x, y) / scaleX() / scaleY():** Skaliert die Größe des Elements anhand eines plattformunabhängigen Faktors[cite: 15]. * **skew(x, y) / skewX() / skewY():** Neigt das Element entlang der Achsen um einen Gradwert[cite: 15]. ==== Ursprung & Verknüpfung ==== * **transform-origin:** Legt den Dreh- bzw. Transformationspunkt fest (z. B. ''center top'', ''100% 100%'', Pixelwerte)[cite: 15]. * **Mehrere Transformationen:** Können hintereinander aufgelistet werden (Achtung: Die Reihenfolge beeinflusst das Ergebnis)[cite: 15]. /* Transformation bei Hover mit weichem Übergang */ img.card { transition: transform 0.3s ease; } img.card:hover { transform: scale(1.1) rotate(-5deg) translate(10px, 5px); } ==== 3D-Transformationen ==== Für 3D-Effekte wird auf dem Elternelement eine Perspektive (''perspective'') definiert und auf den Kindelementen eine 3D-Transformation angewendet[cite: 15]: ul.container { perspective: 600px; /* Niedrigerer Wert = extremere Perspektive */ } ul.container li { transform: rotateX(45deg); } ===== 3. Keyframe-Animationen ===== Keyframe-Animationen bieten die Möglichkeit, komplexe Übergänge über mehrere Zustände hinweg zu steuern[cite: 15]. ==== Ablauf ==== 1. **Ablauf definieren:** Erstellen der Animation mittels ''@keyframes''-Regel und Namensvergabe[cite: 15]. 2. **Eigenschaften zuweisen:** Anwenden der Animations-Eigenschaften auf das Ziel-Element[cite: 15]. /* 1. Definieren der Keyframe-Sequenz */ @keyframes rainbow { 0% { background-color: red; } 20% { background-color: orange; } 40% { background-color: yellow; } 60% { background-color: green; } 80% { background-color: blue; } 100% { background-color: purple; } } /* 2. Zuweisung zum Element */ #magic { animation-name: rainbow; animation-duration: 5s; animation-timing-function: linear; animation-iteration-count: infinite; animation-direction: alternate; } ===== 4. Übersicht der Steuerungsparameter ===== ^ Bereich ^ Eigenschaft ^ Beschreibung ^ | **Transition** | ''transition-property'' | Ziel-Eigenschaften bestimmen[cite: 15] | | | ''transition-duration'' | Zeitdauer des Übergangs[cite: 15] | | | ''transition-timing-function'' | Beschleunigungsprofil (z. B. ''ease'', ''linear'')[cite: 15] | | | ''transition-delay'' | Startverzögerung[cite: 15] | | **Transform** | ''transform'' | Ausführen von ''rotate()'', ''translate()'', ''scale()'', ''skew()''[cite: 15] | | | ''transform-origin'' | Dreh- und Ankerpunkt des Elements festlegen[cite: 15] | | | ''perspective'' | 3D-Raumtiefe auf Elternelement aktivieren[cite: 15] | | **Animation** | ''@keyframes'' | Regel zur Definition der Zwischenzustände (Prozentangaben)[cite: 15] | | | ''animation-name'' | Name der zugewiesenen Keyframe-Regel[cite: 15] | | | ''animation-iteration-count'' | Anzahl der Durchläufe (z. B. ''infinite'')[cite: 15] | | | ''animation-direction'' | Abspielrichtung (z. B. ''normal'', ''alternate'')[cite: 15] |