Ionic 3 创建动画幻灯片

  • @Github
Starting the Ionic Project
> ionic start ionic3-slide-animation blank
> cd ionic3-slide-animation
> ionic serve -l
Building the Slides

Ionic makes starting the slides very easy by using ion-slides and individual ion-slide elements.

In the /src/pages/home/home.html template file, specify


  
    
      

track your routine

whether it's sets, reps, weight used, you can track it all with our intuitive interface.

set personal goals

we're all in the gym for a reason: goals. set goals for diet and fitness.

chat with others

inspire and help each other reach fitness and diet goals.

Styling the Slides

Visit /src/app/app.scss to define a couple global rulesets:

@import url('https://fonts.googleapis.com/css?family=Raleway:300,700');

ion-content {
    background-color: #EFEFEF !important;
    font-family:'Raleway';
}

Then, let's visit the /src/home/home.scss file and place:

page-home {
  .diag {
    position: absolute;
    z-index: 1;
    width: 100%;
    top: 0;
    height: 66%;
    background: url('./../assets/imgs/whitebg.svg') no-repeat;
  }
  ion-icon {
    margin-top: 40%;
    font-size: 7em;
  }
  h2 {
    margin-top: 80% !important;
    font-weight: bold;
    font-size: 1em;
  }
  p {
    width: 80%;
    display: block;
    margin: 0 auto;
    font-size: .9em;
  }
  .swiper-pagination {
    bottom: 12% !important;
  }
  #skip {
    position: absolute;
    bottom: 20px;
    width: 100%;
    background: none !important;
    text-align: center;
    cursor: pointer;
    z-index: 5;
  }
}
Integrating Animation

Let's to make some adjustments in the /src/app/app.module.ts file:

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

// Add BrowserAnimationsModule to imports

imports: [
    BrowserModule,
    IonicModule.forRoot(MyApp),
    BrowserAnimationsModule
]
Detecting Slide Change

Visit the /src/home/home.ts file and place:

import { Component, ViewChild } from '@angular/core';
import { Slides } from 'ionic-angular';
import { trigger, state, style, transition, animate, keyframes } from '@angular/animations';

@Component({
  selector: 'page-home',
  templateUrl: 'home.html',
  animations: [
    trigger('bounce', [
      state('*', style({
        transform: 'translateX(0)'
      })),
      transition('* => rightSwipe', animate('700ms ease-out', keyframes([
        style({ transform: 'translateX(0)', offset: 0 }),
        style({ transform: 'translateX(-65px)', offset: 0.3 }),
        style({ transform: 'translateX(0)', offset: 1.0 })
      ]))),
      transition('* => leftSwipe', animate('700ms ease-out', keyframes([
        style({ transform: 'translateX(0)', offset: 0 }),
        style({ transform: 'translateX(65px)', offset: 0.3 }),
        style({ transform: 'translateX(0)', offset: 1.0 })
      ])))
    ])
  ]
})
export class HomePage {
  @ViewChild(Slides) slides: Slides;
  state: string = '';

  constructor() { }

  slideMoved() {
    if (this.slides.getActiveIndex() >= this.slides.getPreviousIndex()) {
      this.state = 'rightSwipe';
    }
    else {
      this.state = 'leftSwipe';
    }
  }

  animationDone() {
    this.state = '';
  }

}

We define an animation called bounce and set a state to any with *. The transition will activate from any state to rightSwipe or leftSwipe, and we're using keyframes to bounce on the X axis.

We define a state property which we set to any value initially.

slideMoved() will be called when we attach another input of ionSlideDrag to the ion-slides element in the template. When called, we use an if statement to check whether or not a user is swiping a slide right or left. .getActiveIndex() is a method that tells us the current slide index number, and .getPreviousIndex() will obviously let us know the previous slide index. So, we can use this if statement to determine whether or not one is swiping left or right based on comparing the index numbers.

animationDone() is called when we attach an event binding of .done to one of the animated elements in the template.

你可能感兴趣的:(Ionic 3 创建动画幻灯片)