DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!
Die `animation`-Eigenschaft in CSS kann verwendet werden, um viele andere CSS-Eigenschaften zu animieren, wie z. B. color, background-color, height oder width. Jede Animation muss mit der `@keyframes`-Regel definiert werden, die dann mit der `animation`-Eigenschaft aufgerufen wird, wie hier:
.element {
animation: pulse 5s infinite;
}
@keyframes pulse {
0% {
background-color: #001F3F;
}
100% {
background-color: #FF4136;
}
}
Jede `@keyframes`-Regel definiert, was zu bestimmten Zeitpunkten während der Animation geschehen soll. Zum Beispiel ist 0 % der Anfang der Animation und 100 % das Ende. Diese Keyframes können dann entweder über die Kurzschreibweise `animation` oder ihre acht Untereigenschaften gesteuert werden, um mehr Kontrolle darüber zu geben, wie diese Keyframes manipuliert werden sollen.
Untereigenschaften
animation-name: Deklariert den Namen der `@keyframes`-Regel, die manipuliert werden soll.animation-duration: Die Zeitspanne, die eine Animation benötigt, um einen Zyklus abzuschließen.animation-timing-function: Legt voreingestellte Beschleunigungskurven fest, wie z. B. `ease` oder `linear`.animation-delay: Die Zeit zwischen dem Laden des Elements und dem Beginn der Animationssequenz (coole Beispiele).animation-direction: Legt die Richtung der Animation nach dem Zyklus fest. Der Standardwert wird bei jedem Zyklus zurückgesetzt.animation-iteration-count: Die Anzahl der Wiederholungen, die die Animation ausführen soll.animation-fill-mode: Legt fest, welche Werte vor/nach der Animation angewendet werden.
Sie können zum Beispiel den letzten Zustand der Animation auf dem Bildschirm verbleiben lassen oder ihn so einstellen, dass er zum Zustand vor Beginn der Animation zurückkehrt.animation-play-state: Pausiert/spielt die Animation ab.
Diese Untereigenschaften können dann wie folgt verwendet werden:
@keyframes stretch {
/* declare animation actions here */
}
.element {
animation-name: stretch;
animation-duration: 1.5s;
animation-timing-function: ease-out;
animation-delay: 0s;
animation-direction: alternate;
animation-iteration-count: infinite;
animation-fill-mode: none;
animation-play-state: running;
}
/*
is the same as:
*/
.element {
animation:
stretch
1.5s
ease-out
0s
alternate
infinite
none
running;
}
Hier ist eine vollständige Liste, welche Werte jede dieser Untereigenschaften annehmen kann:
animation-timing-function | ease, ease-out, ease-in, ease-in-out, linear, cubic-bezier(x1, y1, x2, y2) (z. B. cubic-bezier(0.5, 0.2, 0.3, 1.0)) |
animation-duration | Xs oder Xms |
animation-delay | Xs oder Xms |
animation-iteration-count | X |
animation-fill-mode | forwards, backwards, both, none |
animation-direction | normal, alternate |
animation-play-state | paused, running, running |
Mehrere Schritte
Wenn eine Animation die gleichen Start- und End-Eigenschaften hat, ist es nützlich, die 0 % und 100 % Werte innerhalb von `@keyframes` durch Kommata zu trennen.
@keyframes pulse {
0%, 100% {
background-color: yellow;
}
50% {
background-color: red;
}
}
Mehrere Animationen
Sie können die Werte auch durch Kommas trennen, um mehrere Animationen auf einem Selektor zu deklarieren. Im folgenden Beispiel möchten wir die Farbe des Kreises in einem `@keyframe` ändern und ihn gleichzeitig mit einer anderen Animation von Seite zu Seite verschieben.
.element {
animation:
pulse 3s ease infinite alternate,
nudge 5s linear infinite alternate;
}
Performance
Das Animieren der meisten Eigenschaften ist ein Performance-Anliegen, daher sollten wir mit Vorsicht vorgehen, bevor wir eine beliebige Eigenschaft animieren. Es gibt jedoch bestimmte Kombinationen, die sicher animiert werden können:
transform: translate()transform: scale()transform: rotate()opacity
Welche Eigenschaften können animiert werden?
MDN hat eine Liste von CSS-Eigenschaften, die animiert werden können. Animierbare Eigenschaften sind tendenziell Farben und Zahlen. Ein Beispiel für eine nicht animierbare Eigenschaft ist `background-image`.
Browser-Unterstützung
Diese Browser-Supportdaten stammen von Caniuse, das weitere Details enthält. Eine Zahl gibt an, dass der Browser die Funktion ab dieser Version unterstützt.
Desktop
| Chrome | Firefox | IE | Edge | Safari |
|---|---|---|---|---|
| 4* | 5* | 10 | 12 | 5.1* |
Mobil / Tablet
| Android Chrome | Android Firefox | Android | iOS Safari |
|---|---|---|---|
| 127 | 127 | 4* | 6.0-6.1* |
Weitere Informationen
- CSS-Animationen verwenden (MDN)
- CSS Animations Level 1 (W3C-Spezifikation)
- CSS Animation Shorthand Property (DigitalOcean)
- Web Animation at Work (A List Apart)
- Fünf Wege, um verantwortungsbewusst zu animieren (24 Ways)
DAS IST SO COOL DANKE
Schön
Hey,
Soweit ich weiß, hat Opera auch Animationen mit dem -o- Präfix implementiert. Vielleicht erfordert dies ein Update?
Außerdem könnte die Verwendung des -webkit- Präfixes in Ihren Beispielen die schlechte Praxis fördern, nur -webkit- zu verwenden. Vielleicht sollten solche Beispiele stattdessen auf die präfixfreie Version umgestellt werden?
Mit freundlichen Grüßen,
Adam Avramov
Wird jetzt korrigiert, danke.
Sie sind definitiv großartig und besser als andere Tutorials! Danke, Chris!
Hallo Chris,
Ich bin mir nicht sicher, ob Sie es wissen, aber @-ms-keyframes hat es nie gegeben. IE10+ unterstützt die @keyframes-Eigenschaft, und < IE9 unterstützt Animationen überhaupt nicht.
Das wusste ich, das war auf diese Weise lange veraltet (bevor ich das wusste, nehme ich an). Habe es korrigiert.
Hallo Sir,
Ich möchte eine Animation von {left:0} bis {left:75px} laufen lassen, dann möchte ich, dass mein Inhalt dauerhaft bei der Position left:75px; stoppt, bis ich meine Maus herausbewege. Ist das möglich??? Wenn ja, wie?????? Bitte helfen Sie.
Vielleicht haben Sie es bereits herausgefunden, aber dieses Einführungsvideo unter diesem Link erklärt, was Sie versuchen zu tun.
http://www.lynda.com/Edge-Animate-tutorials/Web-Motion-Beginners-Animate-CSS-Sprite-Sheet/149119-2.html
Das Einführungsvideo ist kostenlos, Sie müssen also kein Abonnement bezahlen (vorausgesetzt, Sie haben kein Lynda-Abonnement).
Verwenden Sie dies mit Ihrer Animation–
-webkit-animation-fill-mode: forwards;
Hallo, ich habe CSS-Animationen für ein kleines Spiel verwendet
http://mg-otterson.de/fileadmin/puzzle/index.html
Fügt einfach Elemente mit jQuery hinzu, eine Klasse mit Animation, das macht es ziemlich einfach!
Ein weiterer großartiger Beitrag! Viel Stoff zum Nachdenken hier.
„animation-fill-mode: forwards;“
Wenn Sie dies verwenden, bleibt alles, was Sie in der „to“-Bedingung haben, dort.
Ich stieß auf dasselbe Problem, aber beim Studium der CSS-Codebibliothek habe ich leicht die Lösung gefunden, die Animation beim letzten gewählten Farbton zu „stoppen“.
Der Code hat seine Regeln
animation-fill-mode ERFORDERT animation-iteration-count, um die Aktion auszuführen und den Modus „am Ende stoppen“ zu ermöglichen.
Hier ist also der Code, den Sie hinzufügen müssen, damit es funktioniert und Spaß macht
animation-iteration-count: 1;
-webkit-animation-iteration-count: 1; /* Chrome und Safari */
animation-fill-mode: forwards;
-webkit-animation-fill-mode: forwards; /* Chrome und Safari */
Code getestet in Edge, Safari, Chrome und Mozilla. Maxthon funktioniert nur, wenn es aktualisiert wird ( …oder wenn die Entwickler es aktualisieren -.-“ ).
Einen schönen Tag noch!
Ich habe mich gefragt, ob es andere Optionen als ‚alternate‘ gibt. Bitte helfen Sie!
Alex Safayan
Diese Lehren über Animationen sind erstaunlich!!
toller Artikel
mehrzeilige Codeblöcke in dreifachen <– zwei „in“s
Gibt es clevere Ideen, eine Animation wie diese beim Einfügen von DOM zu starten?
Sie lernen Website-basierte Sprachen, besuchen Sie: http://webanalysttips.blogspot.in/
Muss ich „-webkit-“ verwenden, wenn ich Animationen in Chrome verwende? Ich habe sie mit „-webkit-“ ausprobiert, aber für jede Animation muss ich den Code erneut schreiben, das führt zu sehr großen Größen meiner Dateien, die ich nicht sehen kann, ob Sie http://www.djhisar.tk http://www.djhisar.tk. Vorschläge zur Minimierung von CSS-Animationen????
Schauen Sie sich die Verwendung von etwas wie SASS, zusammen mit Compass, an…
Sie könnten auch postCSS zusammen mit Grunt/Gulp verwenden, um Ihnen noch mehr Zeit zu sparen.
Noch besser, verwenden Sie alles zusammen und Sie werden lachen.
Dies wird die CSS-Dateigröße nicht verkleinern (obwohl Grunt/Gulp verwendet werden kann, um Ihr CSS im Handumdrehen zu minimieren), die Präfixe müssen für vollständige Unterstützung vorhanden sein… Was es tun wird, ist, dass Sie nur eine Zeile CSS schreiben können und alle Vendor-Präfixe automatisch für Sie angewendet werden.
Toller Beitrag über CSS3-Animationen :)
http://www.bixelio.com/2014/11/css3-animation.html
Einfache und wichtige CSS-Tags für Animationen. Der Abschnitt über Untereigenschaften ist der beste.
:)
Die MDN-Liste der animierbaren Eigenschaften scheint verschwunden zu sein. :(
CSS-Animationen einfacher Trick Wissens
var red = [0, 100, 63];
var orange = [40, 100, 60];
var green = [75, 100, 40];
var blue = [196, 77, 55];
var purple = [280, 50, 60];
var myName = “EMMANUEL”;
letterColors =[orange,red,blue,green,purple]
if(15 > 5) {
bubbleShape = “circle”;
}
else {
bubbleShape = “square”;
}
drawName(myName, letterColors);
bounceName()
bounceBubbles()
Hallo Chris, könnten Sie mir bitte sagen, welche CSS-Animation auf dieser Website verwendet wird? https://phoenix-startup.com/?ref=wg Ich finde es ein schönes Design!!
Wow, erstaunliche Tricks, vielen Dank! Alles gut erklärt!
Wie stoppt man einen sich von rechts oder links bewegenden Kreis an einem bestimmten Punkt.
Ich verstehe nicht, wenn ich opaticy 0 in 100% keyframes einstelle, behält das Element seine Herkunft und erstellt ein anderes Element für die Animation. Ist das meine Illusion?
ps: Sie können sich diese URL ansehen: https://codepen.io/alphardex/pen/XWWWBmQ die ich gelernt habe.
Gibt es eine Möglichkeit, mehr als eine Klasse innerhalb eines Keyframes zu manipulieren?