Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Angular Animations

Animations can greatly enhance the user experience of your web application by providing visual feedback and improving user interactions. Angular provides a powerful animation module that allows you to create and control animations in your application. This tutorial provides an overview of Angular animations, their key features, and how to use them effectively.

Setting Up Angular Animations

To use Angular animations, you need to import the BrowserAnimationsModule into your application's main module:

import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    BrowserAnimationsModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

Defining Animations

Animations in Angular are defined using the trigger, state, style, transition, and animate functions from the @angular/animations package. Here is an example of a simple animation that toggles the visibility of a box:

import { Component } from '@angular/core';
import { trigger, state, style, transition, animate } from '@angular/animations';

@Component({
  selector: 'app-animation',
  template: `
    <div [@toggle]="state" class="swf-lsn-animated-box"></div>
    <button (click)="toggleState()">Toggle</button>
  `,
  animations: [
    trigger('toggle', [
      state('show', style({
        opacity: 1
      })),
      state('hide', style({
        opacity: 0
      })),
      transition('show <> hide', [
        animate('0.5s')
      ])
    ])
  ]
})
export class AnimationComponent {
  state = 'show';

  toggleState() {
    this.state = this.state === 'show' ? 'hide' : 'show';
  }
}

Using Keyframes

Keyframes allow you to define intermediate steps in an animation sequence. Here is an example of an animation that moves a box from left to right using keyframes:

import { Component } from '@angular/core';
import { trigger, transition, style, animate, keyframes } from '@angular/animations';

@Component({
  selector: 'app-keyframes',
  template: `
    <div [@moveRight]="state" class="swf-lsn-animated-box"></div>
    <button (click)="startAnimation()">Start</button>
  `,
  animations: [
    trigger('moveRight', [
      transition('* => *', [
        animate('1s', keyframes([
          style({ transform: 'translateX(0)', offset: 0 }),
          style({ transform: 'translateX(50%)', offset: 0.5 }),
          style({ transform: 'translateX(100%)', offset: 1.0 })
        ]))
      ])
    ])
  ]
})
export class KeyframesComponent {
  state = '';

  startAnimation() {
    this.state = this.state === 'start' ? 'end' : 'start';
  }
}

Animation Callbacks

Angular animations support callbacks that are invoked at the start and end of an animation. Here is an example of using animation callbacks:

import { Component } from '@angular/core';
import { trigger, state, style, transition, animate } from '@angular/animations';

@Component({
  selector: 'app-callbacks',
  template: `
    <div [@toggle]="state" (@toggle.start)="onStart($event)" (@toggle.done)="onDone($event)" class="swf-lsn-animated-box"></div>
    <button (click)="toggleState()">Toggle</button>
  `,
  animations: [
    trigger('toggle', [
      state('show', style({
        opacity: 1
      })),
      state('hide', style({
        opacity: 0
      })),
      transition('show <> hide', [
        animate('0.5s')
      ])
    ])
  ]
})
export class CallbacksComponent {
  state = 'show';

  toggleState() {
    this.state = this.state === 'show' ? 'hide' : 'show';
  }

  onStart(event: any) {
    console.log('Animation started', event);
  }

  onDone(event: any) {
    console.log('Animation done', event);
  }
}

Conclusion

Angular animations provide a powerful way to enhance the user experience of your web application. By understanding how to set up and define animations, use keyframes, and implement animation callbacks, you can create dynamic and engaging user interfaces. Happy coding!