Making CSS Animations Feel More Natural

Avatar of Brandon Gregory
Brandon Gregory on

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Früher war es so, dass Designer designt und Coder codiert haben. Es gab keine Überschneidungen, und das war so üblich. Aber mit dem Aufkommen von CSS Transitions und Animations verschwimmen diese Grenzen ein wenig. Es ist nicht mehr so einfach, dass der Designer das Design diktiert und der Coder es transkribiert – Designer müssen jetzt etwas über Code wissen und Coder müssen etwas über Design wissen, um effektiv zusammenarbeiten zu können.

Als Beispiel nehmen wir an, ein Designer bittet einen Entwickler, eine Box hüpfen zu lassen. Das ist alles – keine zusätzlichen Anweisungen. Ohne etwas cross-know-how und ein gemeinsames Vokabular sind beide Seiten in dieser Kommunikation etwas verloren: Der Entwickler hat nicht genügend Informationen, um die Vision des Designers vollständig zu realisieren, aber der Designer weiß nicht wirklich, welche Optionen es gibt und wie er sie kommunizieren soll. Mit einer sehr einfachen Interpretation könnte das Ergebnis so aussehen:

Siehe den Pen Bouncing Box 1 von Brandon Gregory (@pulpexploder) auf CodePen.

Nicht sehr aufregend. Obwohl, um fair zu sein, dies alle gegebenen Kriterien erfüllt. Wir können es aber definitiv besser machen.

Das Erste, was wir uns ansehen sollten, ist die Timing-Funktion. Im obigen Beispiel verwenden wir eine lineare Timing-Funktion, was bedeutet, dass sich die Box konstant mit der gleichen Geschwindigkeit bewegt. In einigen Fällen ist dies wünschenswert; in der realen Welt funktioniert Bewegung jedoch normalerweise nicht so.

Eine einfache Lösung ist, die Timing-Funktion einfach auf „ease“ zu ändern. Dies verlangsamt den Anfang und das Ende jeder Animation ein wenig mehr als der mittlere Teil, was einigen Animationen ein natürlicheres Aussehen verleiht. Hier ist die Box mit aktivierter Easing-Funktion:

Siehe den Pen Bouncing Box 2 von Brandon Gregory (@pulpexploder) auf CodePen.

Dies ist eine leichte Verbesserung, aber es gibt noch viel zu tun. Die Box sieht immer noch mechanisch und steif aus, wobei die gleiche Animation immer wieder im gleichen Zeitrahmen stattfindet. Ein leichtes Verzögern zwischen den Sprüngen sorgt für einen visuellen Kontrast, der etwas natürlicher wirkt.

Siehe den Pen Bouncing Box 3 von Brandon Gregory (@pulpexploder) auf CodePen.

Die Box sieht jetzt aus, als würde sie springen und nicht einfach auf und ab gehen. Zwischen den Sprüngen gibt es ein leichtes „Anziehen“ und „Abbremsen“, das nachahmt, was ein lebendes Wesen tun würde, wenn es die gleiche Anweisung erhielte. Auch wenn wir keine Referenz dafür haben, wie eine springende Box aussehen würde, haben wir doch alle eine ziemlich gute Vorstellung davon, wie ein springendes Wesen aussehen würde. Da wir wissen, was in der Natur passieren würde, wirkt die Animation natürlicher, indem wir das nachahmen. Aber wir können noch mehr tun, um dieses „Anziehen“ etwas gewichtiger zu gestalten.

Wenn Sie Zeichentrickfilme ansehen, werden Sie feststellen, dass natürliche Bewegungen oft übertrieben werden, wodurch eine Karikatur des echten Lebens entsteht. Wenn dies gut gemacht ist, kann es genauso natürlich wirken wie etwas in der realen Welt, mit dem zusätzlichen Bonus, der Animation etwas Charme und Charakter zu verleihen.

In diesem Stadium ist die Zusammenarbeit zwischen Designer und Entwickler entscheidend – aber viele Designer sind sich vielleicht nicht einmal bewusst, dass diese Optionen existieren. Es kann am Entwickler liegen, diese Möglichkeit dem Designer vorzuschlagen.

Durch das Hinzufügen einer leichten Verzerrung der Skalierung der Box können wir der Animation viel hinzufügen.

Siehe den Pen Bouncing Box 4 von Brandon Gregory (@pulpexploder) auf CodePen.

Jetzt hat die Box Charakter. Sie fühlt sich lebendig an. Es gibt viele Dinge, die man anpassen kann, aber dies ist bereits weit mehr als die ursprüngliche Anweisung – und das auf sehr gute Weise!

Wir werden noch einen Schritt weiter gehen und am Ende des Sprungs einen kleinen Abpraller hinzufügen.

Siehe den Pen Bouncing Box 5 von Brandon Gregory (@pulpexploder) auf CodePen.

Der zweite Sprung lässt das Ganze lebendiger wirken, aber etwas scheint immer noch nicht zu stimmen. Der Sprung wirkt steif im Vergleich zum Rest der Animation. Wir müssen noch eine weitere Verzerrung hinzufügen, wie wir es für das Anziehen getan haben.

Siehe den Pen Bouncing Box 6 von Brandon Gregory (@pulpexploder) auf CodePen.

Diese subtile Verzerrung am Ende lässt den Abpraller viel natürlicher wirken. Insgesamt eine riesige Verbesserung gegenüber unserem einfachen linearen Hüpfen im ersten Beispiel.

Das mag genau das sein, wonach wir suchen, aber weitere Anpassungen der Bewegungsgeschwindigkeit können mit einer benutzerdefinierten kubischen Bézier-Kurve vorgenommen werden.

Siehe den Pen Bouncing Box 7 von Brandon Gregory (@pulpexploder) auf CodePen.

Ohne dass sowohl Designer als auch Entwickler die grundlegenden Animationsprinzipien und -steuerungen kennen, ist dieses Maß an Anpassung unmöglich. Dieser Artikel kratzt wirklich nur an der Oberfläche beider Bereiche. Wenn Sie Webdesigner oder Webentwickler sind, der mit Designern zusammenarbeitet, möchte ich Sie dringend bitten, sich über beide Bereiche zu informieren.

Für Animationsprinzipien ist „The Illusion of Life: Disney Animation“ von Ollie Johnston und Frank Thomas ein großartiger Einstieg, um zu erfahren, wie man diese Karikatur des echten Lebens lebendig und echt wirken lässt. Mit dieser gemeinsamen Sprache wird die Kommunikation und Zusammenarbeit zwischen Designern und Entwicklern viel einfacher.

Für die technischen Steuerungen und Variationen von CSS-Animationen sind die Möglichkeiten nahezu endlos. Verzögerung und Timing lassen sich einfach anpassen. Wie bereits erwähnt, wenn Ihnen die Standard-Easing-Timing-Funktion nicht gefällt, ist es sehr gut möglich, Ihre eigene mit einer cubic-bezier() zu erstellen. Sie können auch den Grad der Verzerrung anpassen, um die Animation näher an die Realität oder weiter davon weg zu bringen. Wichtig ist, dass sowohl der Designer als auch der Entwickler über diese Variationen nachdenken, anstatt alles blindlings ohne Anpassung zu übernehmen. Gemeinsames Wissen und Zusammenarbeit können selbst einfache Animationen zu großartigen machen.

Weitere Ressourcen