Używamy cookies, żeby zwiększyć Twoje doświadczenia na stronie
CodeWorlds

Projekt: System animacji NOVA LAB

Czas połączyć wszystkie techniki animacji w spójny system interfejsu stacji kosmicznej! W tym projekcie stworzysz kompletny dashboard NOVA LAB, który wykorzystuje

<Transition>
,
<TransitionGroup>
, named transitions, mode out-in, staggered animations, appear i accessibility — wszystko co poznałeś w tym module.

Podsumowanie modułu

W tym module nauczyłeś się:

  • <Transition>
    — animowanie wejścia/wyjścia pojedynczych elementów z 6 klasami CSS
  • Named Transitions — definiowanie wielu typów animacji z atrybutem
    name
  • Tryby przejść (mode) — kontrola kolejności animacji przy przełączaniu widoków (
    out-in
    ,
    in-out
    )
  • JavaScript Animation Hooks — pełna kontrola nad animacjami przez
    @enter
    ,
    @leave
    i callback
    done()
  • <TransitionGroup>
    — animowanie list z
    v-for
    , klasa
    -move
    dla przesuwania elementów
  • Integracja z bibliotekami — custom class names dla Animate.css, GSAP przez JS hooks
  • Route transitions — płynne przejścia między stronami z
    <RouterView>
  • Appear — animacja przy pierwszym renderowaniu, staggered loading
  • Accessibility — respektowanie
    prefers-reduced-motion

Wymagania projektu

Zbuduj Animowany Dashboard Stacji NOVA LAB z następującymi elementami:

1. Panel kontrolny z animacją fade

Główny panel, który można pokazać/ukryć przyciskiem. Użyj

<Transition name="fade">
z
v-if
.

2. Przełączanie widoków z mode out-in

Wewnątrz panelu zaimplementuj zakładki (np. "Status" i "Alerts"). Przełączanie między nimi powinno używać

<Transition name="slide" mode="out-in">
z dynamicznym
:key
.

3. Lista alertów z TransitionGroup

W zakładce "Alerts" wyświetlaj listę alertów z możliwością dodawania i usuwania. Użyj

<TransitionGroup name="list">
z klasami enter, leave i move.

4. Staggered loading elementów przy mount

Lista modułów stacji powinna pojawiać się kaskadowo przy załadowaniu aplikacji. Użyj

<TransitionGroup appear :css="false">
z JS hookami i opóźnieniem na podstawie indeksu.

5. Accessibility

Dodaj obsługę

prefers-reduced-motion
— użytkownicy, którzy nie chcą animacji, powinni widzieć natychmiastowe zmiany bez przejść.

Architektura

1App.vue
2├── Toggle Button (show/hide panel)
3├── Panel kontrolny (Transition name="fade")
4│   ├── Tabs (status / alerts)
5│   │   └── Transition name="slide" mode="out-in"
6│   │       ├── Status view
7│   │       │   └── System metrics display
8│   │       └── Alerts view
9│   │           ├── Add alert button
10│   │           └── TransitionGroup name="list"
11│   │               └── Alert items (add/remove)
12│   └── System modules list (TransitionGroup appear :css="false")
13│       └── Staggered items (delay based on index)

Kluczowe wzorce do zastosowania

  1. Zagnieżdżone Transition — fade na panelu, slide na zakładkach, list na alertach
  2. Różne techniki w jednym projekcie — CSS transitions (fade, slide), CSS move (lista), JS hooks (stagger)
  3. TransitionGroup z move — dodawanie alertu na początku listy powoduje płynne przesunięcie reszty
  4. Appear ze stagger — kaskadowe ładowanie modułów daje efekt "włączania systemów stacji"
  5. Callback done() — w JS hookach pamiętaj o wywołaniu
    done()
    po zakończeniu animacji

Spróbuj rozbudować projekt o dodatkowe efekty — np. animację bounce dla krytycznych alertów lub efekt pulse dla aktywnych modułów!

Przejdź do CodeWorlds