Übergänge

The CSS Podcast – 044: Transitions

Bei der Interaktion mit einer Website stellen Sie möglicherweise fest, dass viele Elemente einen state haben. Drop-down-Menüs können beispielsweise geöffnet oder geschlossen sein. Die Farbe von Schaltflächen kann sich ändern, wenn sie fokussiert sind oder wenn der Mauszeiger darauf bewegt wird. Modale Elemente können ein- und ausgeblendet werden.

Standardmäßig wechselt CSS den Stil dieser Status sofort.

Mithilfe von CSS-Übergängen können wir zwischen dem Ausgangs- und dem Zielstatus des Elements interpolieren. Der Übergang zwischen den beiden verbessert die User Experience, indem eine visuelle Anleitung, Unterstützung und Hinweise zu Ursache und Wirkung der Interaktion bereitgestellt werden.

Übergangseigenschaften

Unterstützte Browser

  • 26
  • 12
  • 16
  • 9

Quelle

In CSS können Sie Übergänge mit den verschiedenen Übergangseigenschaften oder der Kurzeigenschaft transition verwenden.

Übergangseigenschaft

Mit der Eigenschaft transition-property wird angegeben, welcher Stil bzw. welche Stile übergangen werden sollen.

.my-element {
  transition-property: background-color;
}

transition-property akzeptiert einen oder mehrere CSS-Eigenschaftsnamen in einer durch Kommas getrennten Liste.

Optional können Sie mit transition-property: all angeben, dass jedes Attribut umgestellt werden soll.

Übergangsdauer

Mit der Eigenschaft transition-duration wird die Dauer der Umstellung definiert.

transition-duration akzeptiert Zeiteinheiten in Sekunden (s) oder Millisekunden (ms) und ist standardmäßig 0s.

Timing-Funktion-für-Übergang

Mit der Property transition-timing-function können Sie die Geschwindigkeit eines CSS-Übergangs im Verlauf von transition-duration variieren.

Standardmäßig überträgt CSS Ihre Elemente mit einer konstanten Geschwindigkeit (transition-timing-function: linear). Lineare Übergänge können jedoch am Ende etwas künstlich wirken: In Wirklichkeit haben Objekte Gewicht und können nicht sofort stoppen und starten. Wenn du einen Übergang ein- oder ausschaltest, werden die Übergänge lebendiger und natürlicher.

Unser Modul zur CSS-Animation bietet einen guten Überblick über Timing-Funktionen.

Mit den DevTools können Sie in Echtzeit mit verschiedenen Zeitfunktionen experimentieren.

Editor für visuelle Übergangszeit in den Chrome-Entwicklertools.

Übergangsverzögerung

Mit der Eigenschaft transition-delay können Sie angeben, wann der Übergang beginnen soll. Wenn transition-duration nicht angegeben ist, werden die Übergänge sofort gestartet, da der Standardwert 0s ist. Für diese Eigenschaft ist eine Zeiteinheit zulässig, z. B. Sekunden (s) oder Millisekunden (ms).

Diese Eigenschaft eignet sich für Stufenübergänge, die erzielt werden, indem für jedes nachfolgende Element in einer Gruppe ein längerer transition-delay-Wert festgelegt wird.

transition-delay ist auch für die Fehlerbehebung nützlich. Wenn Sie die Verzögerung auf einen negativen Wert setzen, kann ein Übergang weiter in die Zeitachse eingeleitet werden.

Kurzschrift: Übergang

Wie bei den meisten CSS-Eigenschaften gibt es auch eine Kurzversion. transition kombiniert transition-property, transition-duration, transition-timing-function und transition-delay.

.longhand {
  transition-property: transform;
  transition-duration: 300ms;
  transition-timing-function: ease-in-out;
  transition-delay: 0s;
}

.shorthand {
  transition: transform 300ms ease-in-out 0s;
}

Was kann und was nicht umgestellt werden?

Beim Schreiben von CSS können Sie angeben, welche Eigenschaften animierte Übergänge haben sollen. Weitere Informationen finden Sie in der MDN-Liste der animierbaren CSS-Eigenschaften.

Im Allgemeinen ist es nur möglich, Elemente zu übertragen, die sich zwischen ihrem Start- und Endzustand in einem "mittleren Zustand" befinden können. Es ist beispielsweise nicht möglich, Übergänge für font-family hinzuzufügen, da nicht klar ist, wie der mittlere Status zwischen serif und monospace aussehen sollte. Andererseits ist es möglich, Übergänge für font-size hinzuzufügen, da die Einheit eine Länge ist, zwischen der interpoliert werden kann.

Diagramm von Formen, die gleichmäßig von einem Zustand in einen anderen übergehen, sowie zwei Textzeilen in unterschiedlichen Schriftarten, die nicht reibungslos übergangen werden können.

Hier sind einige häufige Eigenschaften, die Sie umstellen können.

Transformieren

Unterstützte Browser

  • 36
  • 12
  • 16
  • 9

Quelle

Die CSS-Eigenschaft transform wird in der Regel umgestellt, da sie eine GPU-beschleunigte Eigenschaft ist, die zu einer flüssigeren Animation führt und außerdem weniger Akku verbraucht. Mit dieser Eigenschaft können Sie ein Element beliebig skalieren, drehen, verschieben oder neigen.

Weitere Informationen finden Sie im Abschnitt zu Transformationen in unserem Modul „Funktionen“.

Farbe

Vor, während und nach einer Interaktion kann Farbe ein guter Indikator für den Zustand sein. Beispielsweise kann sich die Farbe einer Schaltfläche ändern, wenn der Mauszeiger auf sie bewegt wird. Durch diese Farbänderung kann der Nutzer wissen, dass die Schaltfläche anklickbar ist.

Die Eigenschaften color, background-color und border-color sind nur einige Stellen, an denen die Farbe bei einer Interaktion übertragen werden kann.

Weitere Informationen findest du in unserem Modul zu Farben.

Schatten

Schatten werden häufig übergangen, um Höhenunterschiede anzuzeigen, z. B. durch den Fokus der Nutzenden.

Weitere Informationen findest du in unserem Modul zu Schatten.

Filter

filter ist eine leistungsstarke CSS-Eigenschaft, mit der Sie Grafikeffekte spontan hinzufügen können. Der Wechsel zwischen verschiedenen filter-Zuständen kann ziemlich beeindruckende Ergebnisse liefern.

Weitere Informationen finden Sie in unserem Modul zu Filtern.

Umstellungstrigger

Ihr CSS-Code muss eine Statusänderung und ein Ereignis enthalten, durch das diese Statusänderung ausgelöst wird, damit CSS-Übergänge aktiviert werden. Ein typisches Beispiel für einen solchen Trigger ist die Pseudoklasse :hover. Diese Pseudoklasse stimmt überein, wenn der Nutzer den Mauszeiger auf ein Element bewegt.

Nachfolgend finden Sie eine Liste mit einigen Pseudoklassen und Ereignissen, die Statusänderungen in Ihren Elementen auslösen können.

  • :hover: stimmt überein, wenn sich der Cursor über dem Element befindet.
  • :focus: stimmt überein, ob das Element im Fokus ist.
  • :focus-within : Eine Übereinstimmung, wenn das Element oder eines seiner Nachfolger fokussiert ist.
  • :target: Eine Übereinstimmung, wenn das Fragment der aktuellen URL mit der ID des Elements übereinstimmt.
  • :active: stimmt überein, wenn das Element aktiviert wird (in der Regel, wenn die Maus darauf gedrückt wird).
  • Änderung von class von JavaScript: Wenn sich die CSS-class eines Elements über JavaScript ändert, werden zulässige Eigenschaften, die geändert wurden, von CSS übertragen.

Unterschiedliche Übergänge für Betreten und Verlassen

Wenn Sie verschiedene transition-Eigenschaften für den Fokus oder den Mauszeiger darauf festlegen, können Sie interessante Effekte erzielen.

.my-element {
  background: red;

  /* This transition is applied on the "exit" transition */
  transition: background 2000ms ease-in;
}

.my-element:hover {
  background: blue;

  /* This transition is applied on the "enter" transition */
  transition: background 150ms ease;
}

Überlegungen zur Barrierefreiheit

CSS-Übergänge sind nicht für jeden geeignet. Bei manchen Menschen können Übergänge und Animationen zu Bewegungskrankheit oder Unwohlsein führen. Glücklicherweise verfügt CSS über eine Medienfunktion namens prefers-reduced-motion, die erkennt, wenn ein Nutzer angegeben hat, dass weniger Bewegungen auf seinem Gerät verwendet werden sollen.

/*
  If the user has expressed their preference for
  reduced motion, then don't use transitions.
*/
@media (prefers-reduced-motion: reduce) {
  .my-element {
    transition: none;
  }
}

/*
  If the browser understands the media query and the user
  explicitly hasn't set a preference, then use transitions.
*/
@media (prefers-reduced-motion: no-preference) {
  .my-element {
    transition: transform 250ms ease;
  }
}

Weitere Informationen zu dieser Medienfunktion findest du in unserem Blogpost prefers-Reduced-motion: Manchmal ist weniger Bewegung mehr.

Hinweise zur Leistung

Bei der Arbeit mit CSS-Übergängen können Leistungsprobleme auftreten, wenn Sie Übergänge für bestimmte CSS-Eigenschaften hinzufügen. Wenn sich beispielsweise Eigenschaften wie width oder height ändern, verschieben sie Inhalte auf dem Rest der Seite. Dadurch wird CSS gezwungen, neue Positionen für jedes betroffene Element für jeden Frame des Übergangs zu berechnen. Wenn möglich, empfehlen wir stattdessen die Verwendung von Properties wie transform und opacity.

In unserem Leitfaden zu leistungsstarken CSS-Animationen erhalten Sie ausführliche Informationen zu diesem Thema.

Überprüfen Sie Ihr Wissen

Testen Sie Ihr Wissen über Umstellungen

Mit welcher Übergangseigenschaft können Sie ein Easing festlegen?

transition-duration
Versuche es bitte noch einmal.
transition-easing
Keine echte Preisvergleichsportal-Property.
transition-cubic-bezier
Keine echte Preisvergleichsportal-Property.
transition-timing-function
Richtig!
animation-ease
Keine echte Preisvergleichsportal-Property.

Es empfiehlt sich, transition-property: all zu verwenden.

true
Versuche es bitte noch einmal. Die Angabe von all kann zu Leistungsproblemen und unbeabsichtigten Umstellungen führen.
false
Korrekt. Es empfiehlt sich, jede Property einzeln anzugeben. Eine genauere Kontrolle führt zu besserer Leistung und besser vorhersehbaren Ergebnissen.

Alle Properties können umgestellt werden.

true
Versuche es bitte noch einmal. Eigenschaften wie font-family können nicht umgestellt werden.
false
Korrekt. Für inkompatible Eigenschaften kann ein Übergang angegeben werden, der Übergang erfolgt jedoch diskret.