ANGULAR 4X
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Animation trong Angular 4

Animation thêm rất nhiều tương tác giữa  các thẻ html. Animation thì đã có từ Angular 2. Điểm khác biệt ở Angular 4 là animation được tách thành một package riêng biệt chứ không còn nằm trong package @angular/core nữa.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Để bắt đầu sử dụng animation, chúng ta cần import thư viện từ package @angular/platform-browser/animations

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

Cũng như các module khác, chúng ta cần khai báo bên trong mảng import

Bài viết này được đăng tại [free tuts .net]

app.component.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { AppComponent } from './app.component';

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

Tiếp đó, trong file app.component.html, chúng ta thêm các phần tử html để áp dụng animation lên

app.component.html
<div>
    <button (click)="animate()">Click Me</button>
    <div [@myanimation] = "state" class="rotate">
       <img style="width: 340px; height: 82px" src="https://freetuts.net/public/logo/hoc-lap-trinh-online.png" width="100" height="100">
    </div>
 </div>

Trong thẻ div chính,  chúng ta có 1 button và div con kèm1 ảnh. Button được gán sự kiện click; div con được gán sử dụng @myanimation directive với giá trị là state.

Trong file app.component.ts, chúng ta định nghĩa animation

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

@Component({
    selector: 'app-root',
    templateUrl: './app.component.html',
    styleUrls: ['./app.component.css'],
    styles: [`
      div{
         margin: 0 auto;
         text-align: center;
      }
      .rotate{
          width: 340px;
          heigh: 82px;
         border:solid 1px red;
      }
   `],
    animations: [
        trigger('myanimation', [
            state('smaller', style({
                transform: 'translateY(100px)'
            })),
            state('larger', style({
                transform: 'translateY(0px)'
            })),
            transition('smaller <=> larger', animate('300ms ease-in'))
        ])
    ]
})

export class AppComponent {
    state: string = "smaller";
    animate() {
        this.state = this.state == 'larger' ? 'smaller' : 'larger';
    }

}

Ở dòng code thứ 2, chúng ta import các class cần thiết cho animation: trigger, state, style, transittion, animate:

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

Bên trong decorator @Component, ta định nghĩa thêm thuộc tính animations:

app.component.ts
animations: [
        trigger('myanimation', [
            state('smaller', style({
                transform: 'translateY(100px)'
            })),
            state('larger', style({
                transform: 'translateY(0px)'
            })),
            transition('smaller <=> larger', animate('300ms ease-in'))
        ])
    ]

Trigger định nghĩa rằng animation được sử dụng như thế nào. Tham số đầu tiên chính là tên của animation mà ta sẽ sử dụng bên trong thẻ html. Trong ví dụ trên thì đó là 'myanimation'. Tham số thứ 2 chứa các hàm statetransition.

Hàm state định nghĩa các trạng thái của animation: với trạng thái nào thì sẽ có style như thế nào. Trong ví dụ trên thì ta định nghĩa 2 state là: smallerlarger. State smallerstyletransform:translateY(100px) - tức dịch chuyển 100px theo trục y trong toạ độ đề-các và state larger có style là transform: translateY(0px) - tức dịch chuyển lại vị trí ban đầu.

Hàm  transition định nghĩa các thông số hiển thị trên màn hình như độ dài, độ trễ khi chuyển từ trạng thái này sang trạng thái khác.

Cùng nhìn vào file html để xem transition hoạt động như thế nào nhé

app.component.html
<div>
    <button (click)="animate()">Click Me</button>
    <div [@myanimation] = "state" class="rotate">
       <img style="width: 340px; height: 82px" src="https://freetuts.net/public/logo/hoc-lap-trinh-online.png" width="100" height="100">
    </div>
 </div>

Thuộc tính style được thêm vào @component directive để căn giữa cho các thẻ div. 

app.component.ts
 styles: [`
      div{
         margin: 0 auto;
         text-align: center;
      }
      .rotate{
          width: 340px;
          heigh: 82px;
         border:solid 1px red;
      }
   `],

Khi click vào button, hàm animate được khai báo trong file app.component.ts được gọi tới

app.component.ts
state: string = "smaller";
    animate() {
       this.state= this.state == 'larger' ? 'smaller' : 'larger';
    }

Biến state được định nghĩa giá trị mặc định là smaller. Nếu state đang là larger thì chuyển về smaller và ngược lại.

Khi mở trình duyệt lên, ta nhận được kết quả

Giao diện hiển thị khi chưa click vào button click me

Khi click vào button Click Me, ta nhận được kết quả như hình

Giao diện hiển thị khi click button click me

Hàm transform đã thay đổi giá trị của y trên trục y từ 0 đến 100.

Về cơ bản, thì animation trong Angular 4 hoạt động như thế. Bạn có thể tham khảo thêm về animation tại link này.

Bài học về animation trong Angular 4 đến đây là hết rồi. Hẹn các bạn trong bài tiếp theo: Material trong angular 4.

Danh sách file tải về

Tên file tải về Pass giải nén
Tải source code freetuts.net hoặc gameportable.net

Cùng chuyên mục:

Tích hợp thư viện và module bằng Bower và npm vào Angular

Tích hợp thư viện và module bằng Bower và npm vào Angular

Ứng dụng di động đa nền tảng với Ionic và React Native trong AngularJS

Ứng dụng di động đa nền tảng với Ionic và React Native trong AngularJS

Sử dụng Karma và Jasmine để test ứng dụng AngularJS

Sử dụng Karma và Jasmine để test ứng dụng AngularJS

Tạo ứng dụng SPA trong AngularJS với Routing và StateProvider.

Tạo ứng dụng SPA trong AngularJS với Routing và StateProvider.

Cách giao tiếp giữa $rootScope, $broadcast và $emit trong AngularJS

Cách giao tiếp giữa $rootScope, $broadcast và $emit trong AngularJS

Two way data binding trong Angularjs

Two way data binding trong Angularjs

Đa ngôn ngữ Internationalization (i18n) trong AngularJS

Đa ngôn ngữ Internationalization (i18n) trong AngularJS

Security trong AngularJS và cách sử dụng đơn giản

Security trong AngularJS và cách sử dụng đơn giản

Tối ưu hóa hiệu suất trong AngularJS

Tối ưu hóa hiệu suất trong AngularJS

Xử lý lỗi với $exceptionHandler và $log service trong AngularJS.

Xử lý lỗi với $exceptionHandler và $log service trong AngularJS.

Tạo hiệu ứng với ngAnimate trong AngularJS

Tạo hiệu ứng với ngAnimate trong AngularJS

Cách sử dụng route trong AngularJS

Cách sử dụng route trong AngularJS

Cách sử dụng Dependency Injection trong AngularJS

Cách sử dụng Dependency Injection trong AngularJS

Cách sử dụng service trong AngularJS

Cách sử dụng service trong AngularJS

Tạo và sử dụng directive trong AngularJS

Tạo và sử dụng directive trong AngularJS

Interceptors và Http Service trong Angular

Interceptors và Http Service trong Angular

Sử dụng Custom Directives trong AngularJS

Sử dụng Custom Directives trong AngularJS

Thiết lập project với Angular 6

Thiết lập project với Angular 6

Ở bài trước, chúng ta đã tìm hiểu cách cài đặt môi trường cũng như…

Cài đặt môi trường cho Angular 6

Cài đặt môi trường cho Angular 6

Ở bài trước, chúng ta đã tìm hiểu vì sao chọn Angular, Angular 6 là…

Giới thiệu Angular 6x

Giới thiệu Angular 6x

Xin giới thiệu với các bạn tổng quan tất cả các bài viết học về…

Top