Kurs HTML

16.1. Wprowadzenie do Przejść CSS (Transitions)

Strona główna > Kurs CSS > Rozdział 16: Przejścia CSS (Transitions) > Wprowadzenie do Przejść CSS (Transitions)

Czym są Przejścia CSS?

Przejścia CSS (CSS Transitions) pozwalają na **płynną animację zmiany wartości właściwości CSS** w określonym czasie. Zamiast natychmiastowej zmiany (np. koloru tła przy najechaniu myszą), przejście powoduje stopniową zmianę wartości od stanu początkowego do końcowego.

Dzięki przejściom możemy tworzyć bardziej eleganckie, subtelne i angażujące interfejsy użytkownika, dodając animacje do interakcji takich jak najechanie myszą (:hover), uzyskanie fokusu (:focus) czy zmiana klasy elementu za pomocą JavaScript.

Podstawowa koncepcja

Aby zdefiniować przejście, musimy określić co najmniej dwie rzeczy:

  1. Która właściwość CSS ma być animowana? (np. background-color, width, opacity, transform)
  2. Jak długo ma trwać animacja (przejście)? (czas trwania)

Przeglądarka automatycznie obliczy pośrednie stany właściwości między wartością początkową a końcową i wyświetli je w czasie, tworząc płynną animację.

Przykład bez przejścia:

.button {
  background-color: blue;
  padding: 10px 20px;
  color: white;
}

.button:hover {
  background-color: red; /* Natychmiastowa zmiana koloru */
}

Przykład z przejściem:

.button {
  background-color: blue;
  padding: 10px 20px;
  color: white;
  /* Definicja przejścia */
  transition-property: background-color; /* Co animować */
  transition-duration: 0.5s; /* Jak długo */
}

.button:hover {
  background-color: red; /* Zmiana wyzwoli płynne przejście */
}

W drugim przykładzie, po najechaniu myszą na przycisk, kolor tła będzie płynnie zmieniał się z niebieskiego na czerwony przez pół sekundy.

Ważne: Przejście definiujemy na **elemencie w jego stanie bazowym**, a nie w stanie docelowym (np. :hover). Przejście określa, jak element ma reagować na *każdą* zmianę zdefiniowanej właściwości.

Kluczowe właściwości przejść

Do kontrolowania przejść służą cztery główne właściwości CSS:

  • transition-property: Określa, które właściwości CSS mają być animowane podczas przejścia.
  • transition-duration: Określa czas trwania przejścia (np. w sekundach s lub milisekundach ms).
  • transition-timing-function: Określa krzywą przyspieszenia przejścia (jak szybko animacja przebiega w czasie, np. ease, linear, ease-in-out).
  • transition-delay: Określa opóźnienie przed rozpoczęciem przejścia.

Istnieje również właściwość skrócona transition, która pozwala zdefiniować wszystkie te aspekty w jednej deklaracji. Te właściwości zostaną szczegółowo omówione w kolejnych lekcjach tego rozdziału.

FAQ - Najczęściej zadawane pytania

Czy wszystkie właściwości CSS można animować za pomocą przejść?

Nie, tylko właściwości, które mają **definiowalny stan pośredni**, mogą być animowane. Należą do nich głównie właściwości liczbowe (np. width, opacity, font-size), kolory (color, background-color) oraz transformacje (transform). Właściwości takie jak display czy font-family nie mogą być płynnie animowane.

Kiedy przeglądarka uruchamia przejście?

Przejście jest uruchamiane, gdy obliczona wartość właściwości zdefiniowanej w transition-property **zmienia się**. Może to być spowodowane zmianą stanu (np. :hover, :focus), dodaniem/usunięciem klasy przez JavaScript, lub bezpośrednią zmianą stylu przez JavaScript.

Czy przejścia działają w obie strony?

Tak. Jeśli zdefiniujesz przejście na elemencie bazowym, będzie ono działać zarówno przy zmianie do stanu docelowego (np. wejście w :hover), jak i przy powrocie do stanu bazowego (np. opuszczenie :hover). Przeglądarka animuje zmianę wartości w obu kierunkach.

Czy przejścia obciążają wydajność?

Proste przejścia na właściwościach takich jak opacity czy transform są zazwyczaj bardzo wydajne, ponieważ przeglądarki często mogą je akcelerować sprzętowo (GPU). Animowanie właściwości wpływających na layout (np. width, height, margin) może być bardziej kosztowne, ponieważ wymaga przeliczenia układu strony.