用于淡入和淡出视图的 Angular 4 动画

Posted

技术标签:

【中文标题】用于淡入和淡出视图的 Angular 4 动画【英文标题】:Angular 4 animation for fade in and out a view 【发布时间】:2018-03-06 14:56:16 【问题描述】:

我只想让视图在路线更改时淡入淡出。我已经正确设置了组件,但我认为需要正确设置动画语法。

这是我目前的动画尝试。 我将此动画导入到我的组件中:

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

export function routerTransition() 
  return fadeInAndOut();


function fadeInAndOut() 
  return trigger('routerTransition', [
    transition(':enter', [
      style(opacity: 0),
      animate(3000, style(opacity: 1))
    ]),
    transition(':leave', [
      animate(3000, style(opacity: 0))
    ])
  ]);

这是我导入过渡的组件之一:

import  Component  from "@angular/core";
import  routerTransition  from "../../animations/fade.animation";

@Component(
  selector: "about-users",
  templateUrl: "./about.component.html",
  animations: [routerTransition()],
  host:  '[@routerTransition]': ''  
)

export class AboutComponent   
  constructor() 
  

【问题讨论】:

【参考方案1】:

这对我来说适用于路由动画:

打字稿:

  ....
   animations: [
    trigger('routerTransition', [
      transition('* <=> *', [    
        query(':enter, :leave', style( position: 'fixed', opacity: 1 )),
        group([ 
          query(':enter', [
            style( opacity:0 ),
            animate('1000ms ease-in-out', style( opacity:1 ))
          ]),
          query(':leave', [
            style( opacity:1 ),
            animate('1000ms ease-in-out', style( opacity:0 ))]),
        ])
      ])
    ])
   ]

HTML:

<nav>
  <a routerLink="/page1" routerLinkActive="active">Page1</a>
  <a routerLink="/page2" routerLinkActive="active">Page2</a>
</nav>
<br><br>
<main [@routerTransition]="page.activatedRouteData.state">
  <router-outlet #page="outlet"></router-outlet>
</main>

DEMO

【讨论】:

我已经尝试过了,没有发生转换,也没有收到任何控制台错误。你能告诉我你的组件吗?【参考方案2】:

我发现您需要将显示设置为阻止动画才能工作,如下所示:

@HostBinding('style.display') display = 'block';

此外,对于最新的 Angular,您需要使用 HostBinding 而不是 host

请查看我的完整文件:

import  Component, OnInit, HostBinding  from '@angular/core';
import  slideInDownAnimation, fadeInAnimation  from './../checkout-animations';

@Component(
  selector: 'app-checkout-two',
  templateUrl: './checkout-two.component.html',
  styleUrls: ['./checkout-two.component.scss', './../checkout.component.scss'],
  animations: [slideInDownAnimation]
)

export class CheckoutTwoComponent implements OnInit 
  @HostBinding('@routeAnimation') routeAnimation = true;
  @HostBinding('style.display') display = 'block';

  constructor()  

  ngOnInit() 
  


【讨论】:

以上是关于用于淡入和淡出视图的 Angular 4 动画的主要内容,如果未能解决你的问题,请参考以下文章

滚动水平表视图时淡入淡出动画

jQuery-4.动画篇---淡入淡出效果

在 jQuery 中与 CSS 中的过渡同时使用淡入淡出和淡出

在 iOS 7 上的导航视图控制器上使用后退手势时,表格视图单元格上没有淡出和淡入动画

SwiftUI - 使用淡入淡出动画更改文本

使用淡入淡出动画从布尔[重复]更改背景颜色视图