animation
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.
* Some parts of this feature may have varying levels of support.
Die animation Kurzschreibweise CSS Eigenschaft wendet eine Animation zwischen Stilen an. Es ist eine Kurzschreibweise für animation-name, animation-duration, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, animation-fill-mode, animation-play-state und animation-timeline.
Probieren Sie es aus
animation: 3s ease-in 1s infinite reverse both running slide-in;
animation: 3s linear 1s infinite running slide-in;
animation: 3s linear 1s infinite alternate slide-in;
animation: 0.5s linear 1s infinite alternate slide-in;
<section class="flex-column" id="default-example">
<div id="example-element"></div>
</section>
#example-element {
background-color: #1766aa;
margin: 20px;
border: 5px solid #333333;
width: 150px;
height: 150px;
border-radius: 50%;
}
@keyframes slide-in {
from {
margin-left: -20%;
}
to {
margin-left: 100%;
}
}
Zusammengesetzte Eigenschaften
Diese Eigenschaft ist eine Kurzschreibweise für die folgenden CSS-Eigenschaften:
Syntax
/* @keyframes duration | easing-function | delay |
iteration-count | direction | fill-mode | play-state | name */
animation: 3s ease-in 1s 2 reverse both paused slide-in;
/* @keyframes duration | easing-function | delay | name */
animation: 3s linear 1s slide-in;
/* two animations */
animation:
3s linear slide-in,
3s ease-out 5s slide-out;
Die animation-Eigenschaft wird als eine oder mehrere einzelne Animationen angegeben, die durch Kommas getrennt sind.
Jede einzelne Animation wird wie folgt spezifiziert:
-
null, ein oder zwei Vorkommen des
<time>Werts -
null oder ein Vorkommen der folgenden Werte:
-
ein optionaler Name für die Animation, der
none, ein<custom-ident>, oder ein<string>sein kann
Hinweis:
animation-timeline, animation-range-start, und animation-range-end sind derzeit nicht in dieser Liste enthalten, da aktuelle Implementierungen nur zurückgesetzt werden. Das bedeutet, dass das Einfügen von animation einen zuvor deklarierten animation-timeline Wert auf auto zurücksetzt und zuvor deklarierte animation-range-start und animation-range-end Werte auf normal zurücksetzt. Diese Eigenschaften können jedoch nicht über animation gesetzt werden. Wenn Sie CSS Scroll-getriebene Animationen erstellen, müssen Sie diese Eigenschaften deklarieren, nachdem Sie die animation Kurzschreibweise deklariert haben, damit sie wirksam wird.
Werte
<single-easing-function>-
Bestimmt den Typ der Übergangs. Der Wert muss einer der in
<easing-function>verfügbaren sein. <single-animation-iteration-count>-
Die Anzahl der Wiederholungen der Animation. Der Wert muss einer der in
animation-iteration-countverfügbaren sein. <single-animation-direction>-
Die Richtung, in der die Animation abgespielt wird. Der Wert muss einer der in
animation-directionverfügbaren sein. <single-animation-fill-mode>-
Bestimmt, wie Stile auf das Ziel der Animation vor und nach ihrer Ausführung angewendet werden. Der Wert muss einer der in
animation-fill-modeverfügbaren sein. <single-animation-play-state>-
Bestimmt, ob die Animation abgespielt wird oder nicht. Der Wert muss einer der in
animation-play-stateverfügbaren sein.
Beschreibung
Die Reihenfolge der Zeitwerte innerhalb jeder Animationsdefinition ist wichtig: der erste Wert, der als <time> geparst werden kann, wird der animation-duration zugewiesen, und der zweite wird der animation-delay zugewiesen.
Die Reihenfolge anderer Werte innerhalb jeder Animationsdefinition ist ebenfalls wichtig, um einen animation-name Wert von anderen Werten zu unterscheiden. Wenn ein Wert in der animation-Kurzschreibweise als Wert für eine andere Animations-Eigenschaft als animation-name geparst werden kann, wird der Wert zuerst dieser Eigenschaft und nicht animation-name zugewiesen. Aus diesem Grund ist die empfohlene Praxis, einen Wert für animation-name als letzten Wert in einer Liste von Werten anzugeben, wenn Sie die animation-Kurzschreibweise verwenden; dies gilt auch, wenn Sie mehrere, durch Kommas getrennte Animationen mit der animation-Kurzschreibweise angeben.
Obwohl ein Animationsname festgelegt werden muss, damit eine Animation angewendet wird, sind alle Werte der animation-Kurzschreibweise optional und standardmäßig auf den Ausgangswert für jede Langschreibweise der Animationskomponente eingestellt. Der Initialwert von animation-name ist none, was bedeutet, dass, wenn kein animation-name Wert in der animation-Kurzschreibweise-Eigenschaft deklariert ist, keine Animation auf eine der Eigenschaften angewendet wird.
Wenn der animation-duration Wert in der animation-Kurzschreibweise weggelassen wird, ist der Standardwert für diese Eigenschaft 0s. In diesem Fall wird die Animation immer noch ausgeführt (die animationStart und animationEnd Ereignisse werden ausgelöst), aber keine Animation wird sichtbar sein.
Im Falle des animation-fill-mode forwards Wertes verhalten sich animierte Eigenschaften, als wären sie in einem Satz will-change Eigenschaftswert enthalten. Wenn während der Animation ein neuer Stacking-Kontext erstellt wird, behält das Zielelement den Stacking-Kontext bei, nachdem die Animation abgeschlossen ist.
Barrierefreiheit
Blinkende und flackernde Animationen können problematisch für Menschen mit kognitiven Bedenken wie Aufmerksamkeitsdefizit-Hyperaktivitätsstörung (ADHS) sein. Darüber hinaus können bestimmte Arten von Bewegungen ein Auslöser für Vestibulär Störungen, Epilepsie, Migräne und skotopische Empfindlichkeit sein.
Erwägen Sie, eine Möglichkeit zum Anhalten oder Deaktivieren von Animationen bereitzustellen und die Reduced Motion Media Query zu verwenden, um eine ergänzende Erfahrung für Benutzer zu schaffen, die eine Vorliebe für reduzierte animierte Erlebnisse geäußert haben.
- Gestaltung sicherer Webanimationen für Bewegungsempfindlichkeit · Ein Artikel von An A List Apart
- Eine Einführung in die Reduced Motion Media Query | CSS-Tricks
- Responsive Design für Bewegung | WebKit
- MDN Verständnis von WCAG, Leitfaden 2.2 Erklärungen
- Verstehen des Erfolgskriteriums 2.2.2 | W3C Verständnis von WCAG 2.0
Formale Definition
| Anfangswert | wie die jeweiligen Kurzschreibweisen:
|
|---|---|
| Anwendbar auf | alle Elemente |
| Vererbt | Nein |
| Berechneter Wert | wie die jeweiligen Kurzschreibweisen:
|
| Animationstyp | Not animatable |
Formale Syntax
animation =
<single-animation>#
<single-animation> =
<'animation-duration'> ||
<easing-function> ||
<'animation-delay'> ||
<single-animation-iteration-count> ||
<single-animation-direction> ||
<single-animation-fill-mode> ||
<single-animation-play-state> ||
[ none | <keyframes-name> ] ||
<single-animation-timeline>
<animation-duration> =
[ auto | <time [0s,∞]> ]#
<easing-function> =
<linear-easing-function> |
<cubic-bezier-easing-function> |
<step-easing-function>
<animation-delay> =
<time>#
<single-animation-iteration-count> =
infinite |
<number [0,∞]>
<single-animation-direction> =
normal |
reverse |
alternate |
alternate-reverse
<single-animation-fill-mode> =
none |
forwards |
backwards |
both
<single-animation-play-state> =
running |
paused
<keyframes-name> =
<custom-ident> |
<string>
<single-animation-timeline> =
auto |
none |
<dashed-ident> |
<scroll()> |
<view()>
<linear-easing-function> =
linear |
<linear()>
<cubic-bezier-easing-function> =
ease |
ease-in |
ease-out |
ease-in-out |
<cubic-bezier()>
<step-easing-function> =
step-start |
step-end |
<steps()>
<scroll()> =
scroll( [ <scroller> || <axis> ]? )
<view()> =
view( [ <axis> || <'view-timeline-inset'> ]? )
<linear()> =
linear( [ <number> && <percentage>{0,2} ]# )
<cubic-bezier()> =
cubic-bezier( [ <number [0,1]> , <number> ]#{2} )
<steps()> =
steps( <integer> , <step-position>? )
<scroller> =
root |
nearest |
self
<axis> =
block |
inline |
x |
y
<view-timeline-inset> =
[ [ auto | <length-percentage> ]{1,2} ]#
<step-position> =
jump-start |
jump-end |
jump-none |
jump-both |
start |
end
<length-percentage> =
<length> |
<percentage>
Beispiele
Hinweis: Die Animation von CSS Boxmodell Eigenschaften wird nicht empfohlen. Die Animation jeglicher Boxmodell-Eigenschaft ist von Natur aus CPU-intensiv; erwägen Sie stattdessen, die transform Eigenschaft zu animieren.
Sonnenaufgang
Hier animieren wir eine gelbe Sonne über einen hellblauen Himmel. Die Sonne erhebt sich zum Zentrum des Ansichtsfensters und fällt dann aus dem Sichtfeld.
<div class="sun"></div>
:root {
overflow: hidden; /* hides any part of the sun below the horizon */
background-color: lightblue;
display: flex;
justify-content: center; /* centers the sun in the background */
}
.sun {
background-color: yellow;
border-radius: 50%; /* creates a circular background */
height: 100vh; /* makes the sun the size of the viewport */
aspect-ratio: 1 / 1;
animation: 4s linear 0s infinite alternate sun-rise;
}
@keyframes sun-rise {
from {
/* pushes the sun down past the viewport */
transform: translateY(110vh);
}
to {
/* returns the sun to its default position */
transform: translateY(0);
}
}
Animierung mehrerer Eigenschaften
Basierend auf der Sonnensanimation im vorherigen Beispiel fügen wir eine zweite Animation hinzu, die die Farbe der Sonne ändert, während sie auf- und untergeht. Die Sonne beginnt dunkelrot, wenn sie unter dem Horizont ist, und wechselt zu einem hellen Orange, wenn sie die Spitze erreicht.
<div class="sun"></div>
:root {
overflow: hidden;
background-color: lightblue;
display: flex;
justify-content: center;
}
.sun {
background-color: yellow;
border-radius: 50%;
height: 100vh;
aspect-ratio: 1 / 1;
animation: 4s linear 0s infinite alternate animating-multiple-properties;
}
/* it is possible to animate multiple properties in a single animation */
@keyframes animating-multiple-properties {
from {
transform: translateY(110vh);
background-color: red;
filter: brightness(75%);
}
to {
transform: translateY(0);
background-color: orange;
/* unset properties i.e. 'filter' will revert to default values */
}
}
Anwendung mehrerer Animationen
Hier ist eine Sonne, die auf einem hellblauen Hintergrund auf- und untergeht. Die Sonne dreht sich allmählich durch ein Regenbogen von Farben. Das Timing der Sonnensposition und -farbe ist unabhängig.
<div class="sun"></div>
:root {
overflow: hidden;
background-color: lightblue;
display: flex;
justify-content: center;
}
.sun {
background-color: yellow;
border-radius: 50%;
height: 100vh;
aspect-ratio: 1 / 1;
/* multiple animations are separated by commas, each animation's parameters are set independently */
animation:
4s linear 0s infinite alternate rise,
24s linear 0s infinite psychedelic;
}
@keyframes rise {
from {
transform: translateY(110vh);
}
to {
transform: translateY(0);
}
}
@keyframes psychedelic {
from {
filter: hue-rotate(0deg);
}
to {
filter: hue-rotate(360deg);
}
}
Kaskadierung mehrerer Animationen
Hier ist eine gelbe Sonne auf einem hellblauen Hintergrund. Die Sonne springt zwischen den linken und rechten Seiten des Ansichtsfensters hin und her. Die Sonne bleibt im Ansichtsfenster, obwohl eine Aufstiegsanimation definiert ist. Die Transform-Eigenschaft der Aufstiegsanimation wird von der Sprung-Animation 'überschrieben'.
<div class="sun"></div>
:root {
overflow: hidden;
background-color: lightblue;
display: flex;
justify-content: center;
}
.sun {
background-color: yellow;
border-radius: 50%;
height: 100vh;
aspect-ratio: 1 / 1;
/*
animations declared later in the cascade will override the
properties of previously declared animations
*/
/* bounce 'overwrites' the transform set by rise, hence the sun only moves horizontally */
animation:
4s linear 0s infinite alternate rise,
4s linear 0s infinite alternate bounce;
}
@keyframes rise {
from {
transform: translateY(110vh);
}
to {
transform: translateY(0);
}
}
@keyframes bounce {
from {
transform: translateX(-50vw);
}
to {
transform: translateX(50vw);
}
}
Siehe Verwendung von CSS-Animationen für zusätzliche Beispiele.
Spezifikationen
| Specification |
|---|
| CSS Animations Level 1> # animation> |
Browser-Kompatibilität
Siehe auch
- Verwendung von CSS-Animationen
- JavaScript
AnimationEventAPI