Hauptmenü

Untermenü

CSS3 - Animation

1. Ab sofort ohne JavaScript

Tja, es stimmt tatsächlich. Mit CSS3 kann man mittlerweile auch eigene Animationen bauen. Allerdings funktioniert das nur in Kombination mit den Pseudoklassen :hover, :target und :focus. Derzeit unterstützen nur der Internet Explorer 10, Firefox und Opera diese Eigenschaft nativ, Safari und Chrome benötigen dafür ihr entsprechendes Vendorpräfix.

2. transition

Diese neue Angabe besteht aus vier verschiedenen Einstellungen. Als da wären.

3. Das Prinzip

Man definiert nun für ein Element die gewünschten Eigenschaften im Normalzustand und dann die für die entsprechende Pseudoklasse (siehe oben). Wichtig dabei ist, dass man die zu animierenden Eigenschaften nicht(!) für beide Zustände festlegen muss. Will man also zum Beispiel die Breite ändern, so muss die nur bei der Pseudoklasse definiert sein.

Bei den transition-Eigenschaften gibt es nun zwei Möglichkeiten. Baut man sie in den Normalzustand ein, so läuft die Animation zwei Mal ab. Also erst vorwärts, wenn der Zustand der Pseudoklasse erreicht wurde (zum Beispiel :hover) und dann wieder rückwärts, wenn wieder der Normalzustand wiederhergestellt wurde.

Wird transition dagegen bei der Pseudoklasse definiert, so läuft die Animation nur dann, wenn der entsprechende Zustand erreicht wurde. Sobald man den beendet, wird augenblicklich der Ursprung wiederhergestellt.

Muy importante!

Besonders beim :hover sollte man auf zwei Dinge achten. Denn wenn man zum Beispiel mit Breiten- beziehungsweise Höhenangaben oder transform arbeitet, so kann der Cursor seinen Fokus verlieren und die Animation stoppt.

4. Eine mögliche Ausgangslage

Es gibt für <div>-Element mit der Klasse animation folgenden Normalzustand.


div.animation {
  width100px;
  height100px;
  border1px solid #36628A;
  border-radius7px;
  box-shadow5px 5px 5px #aaa;
  padding0 10px;
}

Bei einem :hover soll nun Folgendes angepasst werden.


div.animation:hover {
  width150px;
  height50px;
  border5px solid #000;
  border-radius12px;
  background#36628A;      
  color#fff;
  transformrotate(360deg);
}

Es ändern sich also folgende Eigenschaften.

Aminiert werden sollen aber nur folgende Eigenschaften.

5. Eine Animation

Auflistung der zu animierenden Eigenschaften


transition-propertywidthheightborderborder-radiustransform;

Wenn man diese Eigenschaft weglässt, so wird der komplette Von-Nach-Zustand animiert.

Dauer der Animation


transition-duration4s;

Diese Angabe ist praktisch Pflicht, da der Standwert 0 und somit ziemlich sinnfrei ist.

Art der Animation


transition-timing-function: ease-in;

Wenn man das weglässt, so wird ease als Standard genommen.

Verzögerung der Animation


transition-delay1000ms;

Kann man auch ignorieren, Standard ist ebenfalls 0, also keine Verzögerung.

Das Ergebnis

Platziert den Mauszeiger ganz in der Mitte, sonst kann er den Fokus wegen rotate verlieren. Ein Hinweis noch für die Safari- und Chrome-Benutzer! Bei euch werden auch color und background in Animation mit einbezogen. Woran das liegt, kann ich derzeit noch nicht sagen. Sobald ich mehr dazu weiß, reiche ich die Infos nach.

Bla blubb blubber

Die Kurzschreibweise

Ist natürlich auch möglich, das Schema solltet ihr ja kennen. Allerdings kann das nach ersten Tests bei dem einen oder anderen Browser zu Problemen führen. Details dazu reiche ich nach. Außerdem ist sie bei komplexeren Animationen sehr unübersichtlich. Ich rate also erst mal davon ab.

zurück zum vorherigen Abschnitt