Twoje Centrum Szkoleniowe

Nauczmy się dziś czegoś nowego!

Kurs tworzenia stron - HTML + CSS

Przejścia i animacje CSS: dodawanie dynamiki

Przejścia i animacje w CSS pozwalają na tworzenie płynnych efektów wizualnych bez konieczności używania JavaScriptu. Dzięki nim możesz poprawić doświadczenie użytkownika, sprawić, że interfejs będzie bardziej interaktywny i atrakcyjny, a także podkreślić ważne elementy na stronie.

 

Dlaczego przejścia i animacje są ważne?

    • Poprawa doświadczenia użytkownika: Płynne efekty wizualne sprawiają, że interakcja z witryną jest przyjemniejsza i bardziej intuicyjna.
    • Podkreślanie interaktywności: Animacje mogą wskazywać użytkownikowi, że elementy są interaktywne lub że coś się zmieniło.
    • Estetyka: Dodają profesjonalizmu i nowoczesności stronie.
    • Bez konieczności JavaScriptu: Proste animacje można tworzyć za pomocą samego CSS, co upraszcza kod i poprawia wydajność.

 

Przejścia CSS (Transitions)

Co to są przejścia?

Przejścia umożliwiają zmianę wartości właściwości CSS w określonym czasie. Dzięki temu zmiany stylów (np. przy najechaniu myszką) nie są natychmiastowe, ale odbywają się płynnie.

Składnia przejść

Podstawowa składnia właściwości transition:

transition: [property] [duration] [timing-function] [delay];

 

    • property: Właściwość CSS, której dotyczy przejście (np. background-color, width).
    • duration: Czas trwania przejścia (np. 0.5s, 200ms).
    • timing-function: Funkcja czasowa określająca tempo przejścia (np. ease, linear, ease-in, ease-out, ease-in-out, cubic-bezier()).
    • delay: Opóźnienie przed rozpoczęciem przejścia (opcjonalne).

Przykład prostego przejścia

HTML:

<button class="btn">Najeżdżaj na mnie</button>

 

CSS:

.btn {
  background-color: #3498db;
  color: #fff;
  padding: 15px 30px;
  border: none;
  cursor: pointer;
  transition: background-color 0.3s ease;
}

.btn:hover {
  background-color: #2980b9;
}

 

Wyjaśnienie:

    • Używamy transition na przycisku, aby zmiana koloru tła podczas najechania myszką odbywała się płynnie w ciągu 0.3 sekundy.

Przejście wielu właściwości

Możemy zastosować przejście do wielu właściwości jednocześnie:

.element {
  transition: background-color 0.3s, transform 0.5s;
}

 

Użycie transition z all

Aby zastosować przejście do wszystkich zmieniających się właściwości:

.element {
  transition: all 0.5s ease-in-out;
}

 

Uwaga: Użycie all może wpływać na wydajność, dlatego zaleca się stosowanie konkretnych właściwości, gdy jest to możliwe.

 

Funkcje czasowe (Timing Functions)

Funkcje czasowe określają, jak tempo przejścia zmienia się w czasie.

    • linear: Stałe tempo przez cały czas.
    • ease: Domyślna funkcja, zaczyna się powoli, potem przyspiesza, a na końcu znów zwalnia.
    • ease-in: Zaczyna się powoli, potem przyspiesza.
    • ease-out: Zaczyna się szybko, potem zwalnia.
    • ease-in-out: Połączenie ease-in i ease-out.
    • cubic-bezier(n,n,n,n): Pozwala na zdefiniowanie własnej funkcji czasowej.

Przykład z cubic-bezier:

.element {
  transition: transform 0.5s cubic-bezier(0.68, -0.55, 0.27, 1.55);
}

 

 

Animacje CSS

Co to są animacje?

Animacje CSS pozwalają na tworzenie bardziej złożonych efektów niż przejścia. Dzięki nim możemy zmieniać wartości wielu właściwości w czasie, kontrolować kluczowe klatki (keyframes) animacji oraz określać, jak animacja ma się zachowywać.

Definiowanie animacji

Animacja składa się z dwóch części:

    1. Definicja klatek kluczowych za pomocą @keyframes.
    2. Przypisanie animacji do elementu za pomocą właściwości animacji.

Składnia @keyframes

@keyframes nazwa_animacji {
  odsetek {
    /* Style */
  }
  odsetek {
    /* Style */
  }
}

 

Lub używając słów kluczowych from i to:

@keyframes nazwa_animacji {
  from {
    /* Początkowe style */
  }
  to {
    /* Końcowe style */
  }
}

 

Właściwości animacji

    • animation-name: Nazwa animacji (zgodna z nazwą zdefiniowaną w @keyframes).
    • animation-duration: Czas trwania animacji.
    • animation-timing-function: Funkcja czasowa.
    • animation-delay: Opóźnienie przed rozpoczęciem animacji.
    • animation-iteration-count: Liczba powtórzeń animacji (np. 1, infinite).
    • animation-direction: Kierunek animacji (normal, reverse, alternate, alternate-reverse).
    • animation-fill-mode: Określa, czy animacja zachowuje style po zakończeniu (none, forwards, backwards, both).
    • animation-play-state: Stan animacji (running, paused).

Przykład prostej animacji

HTML:

<div class="box"></div>

 

CSS:

.box {
  width: 100px;
  height: 100px;
  background-color: #e74c3c;
  animation: ruch 2s infinite;
}

@keyframes ruch {
  0% {
    transform: translateX(0);
  }
  50% {
    transform: translateX(200px);
  }
  100% {
    transform: translateX(0);
  }
}

 

Wyjaśnienie:

    • Definiujemy animację ruch, która przesuwa element w poziomie.
    • Element .box ma przypisaną animację ruch, trwającą 2 sekundy i powtarzającą się nieskończenie (infinite).

Skrócona składnia animacji

Możemy łączyć właściwości animacji w jedną linię:

animation: nazwa_animacji czas_trwania funkcja_czasowa opóźnienie liczba_powtórzeń kierunek fill-mode;

 

Przykład:

.box {
  animation: ruch 2s ease-in-out 0s infinite alternate both;
}

 

 

Przekształcenia CSS (Transforms)

Przekształcenia pozwalają na zmianę położenia, rozmiaru, obrotu i innych właściwości elementów.

Właściwość transform

Główna właściwość do przekształcania elementów.

Przykładowe funkcje transform:

    • translate(x, y): Przesunięcie elementu w osi X i Y.
    • rotate(angle): Obrót elementu o podany kąt (np. rotate(45deg)).
    • scale(x, y): Skalowanie elementu w osi X i Y (np. scale(1.5, 1.5)).
    • skew(x-angle, y-angle): Pochylenie elementu (np. skew(20deg, 0deg)).
    • matrix(a, b, c, d, e, f): Matryca przekształceń.

Przykłady przekształceń

Obrót elementu:

.element {
  transform: rotate(45deg);
}

 

Skalowanie elementu:

.element {
  transform: scale(1.2);
}

 

Przesunięcie elementu:

.element {
  transform: translateX(100px);
}

 

 

Łączenie przekształceń, przejść i animacji

Przykład: Animowany przycisk z efektem najechania

HTML:

<button class="btn-animowany">Kliknij mnie</button>

 

CSS:

.btn-animowany {
  background-color: #1abc9c;
  color: #fff;
  padding: 15px 30px;
  border: none;
  cursor: pointer;
  transition: transform 0.3s ease;
}

.btn-animowany:hover {
  transform: scale(1.1);
}

 

Wyjaśnienie:

    • Przy najechaniu myszką na przycisk, zwiększa on swoją skalę o 10%, tworząc efekt powiększenia.

Przykład: Pulsujący element

HTML:

<div class="pulsuj"></div>

 

CSS:

.pulsuj {
  width: 100px;
  height: 100px;
  background-color: #9b59b6;
  border-radius: 50%;
  animation: pulsowanie 1.5s infinite;
}

@keyframes pulsowanie {
  0% {
    transform: scale(1);
    opacity: 1;
  }
  50% {
    transform: scale(1.2);
    opacity: 0.7;
  }
  100% {
    transform: scale(1);
    opacity: 1;
  }
}

 

Wyjaśnienie:

    • Element .pulsuj zmienia swoją skalę i przezroczystość, tworząc efekt pulsowania.

 

Dobre praktyki

    • Unikaj nadmiernej ilości animacji: Zbyt wiele animacji może rozpraszać użytkownika i wpływać na wydajność strony.
    • Używaj animacji celowo: Animacje powinny dodawać wartości interfejsowi, np. podkreślać ważne elementy lub poprawiać nawigację.
    • Optymalizuj wydajność: Stosuj przekształcenia 3D (np. translateZ(0)) lub will-change, aby przeglądarka używała akceleracji sprzętowej.
    • Pamiętaj o dostępności: Upewnij się, że animacje nie powodują problemów dla użytkowników wrażliwych na ruch (np. osoby z vestibular disorders).
    • Testuj na różnych urządzeniach: Animacje mogą działać inaczej w różnych przeglądarkach i na różnych urządzeniach.

 

Częste błędy i jak ich unikać

    • Niepodanie właściwości do animacji: Upewnij się, że właściwości, które chcesz animować, są poprawnie zdefiniowane.

Niepoprawnie:

.element {
  transition: 0.5s;
}

 

Poprawnie:

.element {
  transition: opacity 0.5s;
}

 

    • Używanie transition bez efektu: Pamiętaj, że transition działa tylko wtedy, gdy wartość właściwości zmienia się.
    • Zbyt długie lub zbyt krótkie animacje: Dobierz odpowiedni czas trwania animacji, aby była zauważalna, ale nie uciążliwa.
    • Nadpisywanie animacji: Upewnij się, że inne style nie kolidują z animacjami.
    • Zapominanie o prefiksach: W przeszłości przeglądarki wymagały prefiksów (np. -webkit-), obecnie jest to rzadziej potrzebne, ale warto sprawdzić kompatybilność.

 

Podsumowanie

W tej lekcji nauczyliśmy się:

    • Czym są przejścia CSS i jak je stosować do tworzenia płynnych efektów.
    • Jak działają animacje CSS, jak definiować klatki kluczowe i przypisywać animacje do elementów.
    • Użycia przekształceń CSS do zmiany położenia, rozmiaru i obrotu elementów.
    • Łączenia przejść, animacji i przekształceń w celu tworzenia zaawansowanych efektów wizualnych.
    • Dobrych praktyk w stosowaniu animacji i przejść oraz jak unikać typowych błędów.

Animacje i przejścia CSS są potężnym narzędziem, które pozwala na dodanie interaktywności i życia do Twoich stron internetowych. Pamiętaj jednak, aby używać ich z rozwagą i zawsze z myślą o użytkowniku.

 

Zadania do samodzielnego wykonania

    1. Stwórz rozwijane menu nawigacyjne:

      • Zaprojektuj menu, w którym podmenu pojawia się płynnie po najechaniu na element główny.
      • Użyj transition do animacji pojawiania się podmenu.
    2. Zaprojektuj animowany baner:

      • Stwórz baner reklamowy lub promocyjny, który wykorzystuje animacje do przyciągnięcia uwagi.
      • Użyj @keyframes do zdefiniowania animacji, np. przesuwania tekstu czy zmiany koloru.
    3. Eksperymentuj z przekształceniami 3D:

      • Stwórz kartę, która obraca się po najechaniu myszką, odsłaniając swoją drugą stronę.
      • Użyj transform: rotateY() oraz perspective do stworzenia efektu 3D.

 

Ciekawostka

Czy wiesz, że dzięki animacjom CSS można tworzyć całe gry i interaktywne doświadczenia bez użycia JavaScriptu? Niektórzy twórcy wykorzystują zaawansowane techniki animacji CSS do tworzenia niesamowitych efektów i interaktywnych elementów, pokazując, jak potężnym narzędziem może być CSS w kreatywnych rękach.

Testy przypięte do lekcji
Aby uzyskać dostęp do testów i ćwiczeń interaktywnych - Zaloguj się
Aby widzieć ocenę lekcji - Zaloguj się