Hone logo
Hone
Problems

Animated Route Transitions in Angular

This challenge focuses on implementing visually appealing route transitions in an Angular application. Route animations enhance the user experience by providing feedback during navigation, making the application feel more polished and responsive. You'll be creating a simple application with two routes and animating the transition between them.

Problem Description

You are tasked with creating an Angular application with two routes: /home and /about. When navigating between these routes, you need to implement a fade-in/fade-out animation. The animation should smoothly transition the content of the active route, making it appear to fade in while the previous route fades out.

Key Requirements:

  • Two Routes: The application must have at least two routes, /home and /about.
  • Fade Animation: A fade-in/fade-out animation must be applied when transitioning between the routes. The content of the new route should fade in, while the content of the previous route fades out.
  • Angular Router: Utilize the Angular Router for navigation.
  • Animation Configuration: Define the animation configuration in a separate file (e.g., animations.ts) for better organization and reusability.
  • Triggering the Animation: The animation should be triggered automatically by the Angular Router during route changes.

Expected Behavior:

  1. Initially, the /home route is displayed.
  2. When the user navigates to /about, the content of /home should fade out, and the content of /about should fade in.
  3. When the user navigates back to /home, the content of /about should fade out, and the content of /home should fade in.
  4. The animation should be smooth and visually appealing.

Edge Cases to Consider:

  • Initial Load: The initial load of the /home route should not trigger the animation.
  • Multiple Animations: Ensure that animations don't overlap or interfere with each other.
  • Performance: The animation should be performant and not cause noticeable lag or slowdowns.

Examples

Example 1:

Input: User navigates from `/home` to `/about`
Output: Content of `/home` fades out, and content of `/about` fades in smoothly.
Explanation: The router detects the route change and triggers the defined fade animation.

Example 2:

Input: User navigates from `/about` to `/home`
Output: Content of `/about` fades out, and content of `/home` fades in smoothly.
Explanation: The router detects the route change and triggers the defined fade animation.

Example 3: (Initial Load)

Input: Application starts and navigates to `/home` initially.
Output: `/home` content is displayed immediately without any fade-in animation.
Explanation: The initial route load should not trigger the animation.

Constraints

  • Angular Version: Use Angular version 14 or higher.
  • Animation Duration: The fade animation should have a duration of approximately 300-500 milliseconds.
  • CSS Transitions: Utilize CSS transitions for the animation effect.
  • Component Structure: Keep the component structure relatively simple for clarity. No complex component interactions are required beyond route navigation.
  • Performance: The animation should not significantly impact the application's performance. Avoid overly complex or resource-intensive animation techniques.

Notes

  • Consider using Angular's TransitionState to prevent the animation from triggering on the initial route load.
  • The animation configuration should be modular and reusable.
  • Focus on creating a clean and well-structured solution.
  • You can use simple HTML elements (e.g., div with text) for the content of each route to demonstrate the animation. The specific content is not important for this challenge.
  • Think about how to define the animation trigger based on the route changes. The router.events observable can be helpful.
Loading editor...
typescript