css - Angular 2 ngIf 和 CSS 过渡/动画

标签 css angular angular-animations

我希望使用 css 以 Angular 2 从右侧滑入一个 div。

  <div class="note" [ngClass]="{'transition':show}" *ngIf="show">
    <p> Notes</p>
  </div>
  <button class="btn btn-default" (click)="toggle(show)">Toggle</button>

如果我只使用 [ngClass] 来切换类并利用不透明度,我可以正常工作。 但是 li 不希望从一开始就呈现该元素,所以我先用 ngIf “隐藏”它,但是过渡将不起作用。

.transition{
  -webkit-transition: opacity 1000ms ease-in-out,margin-left 500ms ease-in-out;
  -moz-transition: opacity 1000ms ease-in-out,margin-left 500ms ease-in-out;
  -ms-transition: opacity 1000ms ease-in-out,margin-left 500ms ease-in-out ;
  -o-transition: opacity 1000ms ease-in-out,margin-left 500ms ease-in-out;
  transition: opacity 1000ms ease-in-out,margin-left 500ms ease-in-out;
  margin-left: 1500px;
  width: 200px;
  opacity: 0;
}

.transition{
  opacity: 100;
  margin-left: 0;
}

最佳答案

更新 4.1.0

Plunker

另见 https://github.com/angular/angular/blob/master/CHANGELOG.md#400-rc1-2017-02-24

更新 2.1.0

Plunker

有关详细信息,请参阅 Animations at angular.io

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

@Component({
  selector: 'my-app',
  animations: [
    trigger(
      'enterAnimation', [
        transition(':enter', [
          style({transform: 'translateX(100%)', opacity: 0}),
          animate('500ms', style({transform: 'translateX(0)', opacity: 1}))
        ]),
        transition(':leave', [
          style({transform: 'translateX(0)', opacity: 1}),
          animate('500ms', style({transform: 'translateX(100%)', opacity: 0}))
        ])
      ]
    )
  ],
  template: `
    <button (click)="show = !show">toggle show ({{show}})</button>

    <div *ngIf="show" [@enterAnimation]>xxx</div>
  `
})
export class App {
  show:boolean = false;
}

原创

*ngIf 在表达式变为 false 时从 DOM 中删除元素。您不能对不存在的元素进行转换。

改用隐藏:

<div class="note" [ngClass]="{'transition':show}" [hidden]="!show">

关于css - Angular 2 ngIf 和 CSS 过渡/动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36417931/

相关文章:

css - 变换:scale to fullscreen?

css - Bootstrap - 更改表单组的 css @media 大小

css - 如何动态更新 Angular 动画? ( Angular 8)

child : style jumps back 上的 Angular 4 动画

Angular 5 动画 : How to work with :leave transition while the component is removed from DOM

html - css font-face 不适用于@fonsquirrel

php - 解析错误<br/>错误

angular - 如何动态覆盖 Angular2 可注入(inject)服务?

java - 如何从 Number 值反序列化为 int(错误 - 没有 int/Int 参数构造函数/工厂方法从 Number 值反序列化)

javascript - Angular 6 :- Reactive form validation is not working propery